從上面分析可以看出,當(dāng)n大于等于2時(shí), 移動(dòng)的過程可分解為
三個(gè)步驟:
第一步 把A上的n-1個(gè)圓盤移到B上;
第二步 把A上的一個(gè)圓盤移到C上;
第三步 把B上的n-1個(gè)圓盤移到C上;其中第一步和第三步是類同的。
當(dāng)n=3時(shí),第一步和第三步又分解為類同的三步,即把n`-1個(gè)圓盤從一個(gè)針移到另一個(gè)針上,這里的n`=n-1。 顯然這是一個(gè)遞歸過程,據(jù)此算法可編程如下:
move(int n,int x,int y,int z)
{
if(n==1)
printf("%c-->%c\n",x,z);
else
{
move(n-1,x,z,y);
printf("%c-->%c\n",x,z);
move(n-1,y,x,z);
}
}
main()
{
int h;
printf("\ninput number:\n");
scanf("%d",&h);
printf("the step to moving %2d diskes:\n",h);
move(h,'a','b','c');
}
move(int n,int x,int y,int z)
{
if(n==1)
printf("%-->%c\n",x,z);
else
{
move(n-1,x,z,y);
printf("%c-->%c\n",x,z);
move(n-1,y,x,z);
}
}
main()
{ ……
move(h,'a','b','c');
}
相關(guān)推薦:
計(jì)算機(jī)等考二級(jí)C語言備考:C語言/C++編譯過程 2010年計(jì)算機(jī)等級(jí)考試二級(jí)公共基礎(chǔ)知識(shí)教程 考試吧:2010年計(jì)算機(jī)等考二級(jí)C預(yù)測(cè)題匯總 全國計(jì)算機(jī)等考二級(jí)C語言:程序設(shè)計(jì)實(shí)戰(zhàn)匯總