[問題] 河內塔的問題!!
以下我是參考書籍的程式~網路上大部份也是這個程式
問題我看不懂!!希望高手幫個忙~謝謝
void hanoi(int,int,int,int);
int main(void)
{
int i;
printf("總共有多少圓盤要搬\n");
scanf("%d",&i);
hanoi(i,1,2,3);
system("pause");
return 0;
}
void hanoi(int i,int begin,int mid,int dest)
{
if (i==1)
printf("將第 %d 個盤子從第 %d 個塔移到第 %d 個塔\n",i,begin,dest);
else
{
hanoi(i-1,begin,dest,mid);
printf("將第 %d 個盤子從第 %d 個塔移到第 %d 個塔\n",i,begin,dest);
hanoi(i-1,mid,begin,dest);
}
我最大的疑問在else之後!
假設盤子輸入3時就是i=3時
第一個動作進入hanoi(i-1,begin,dest,mid);
所以printf()出來為什麼會是第一個盤子從第一個塔移到第三個塔
因為是第一個i=3;為什麼第一個顯示會是1呢?
另一個問題為什麼不可以把第二行printf()放在第一個hanoi之前呢?
另外有一個最大的問題!
我看不出來hanoi是在甚麼時候運算的!
懇請高手幫幫忙...非常感謝!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.240.172.103
→
11/05 11:45, , 1F
11/05 11:45, 1F
→
11/05 11:49, , 2F
11/05 11:49, 2F
→
11/05 11:59, , 3F
11/05 11:59, 3F
推
11/05 11:59, , 4F
11/05 11:59, 4F
→
11/05 12:01, , 5F
11/05 12:01, 5F
推
11/05 12:01, , 6F
11/05 12:01, 6F
→
11/05 12:01, , 7F
11/05 12:01, 7F
→
11/05 12:02, , 8F
11/05 12:02, 8F
→
11/05 12:03, , 9F
11/05 12:03, 9F
→
11/05 12:05, , 10F
11/05 12:05, 10F
→
11/05 12:06, , 11F
11/05 12:06, 11F
→
11/05 12:06, , 12F
11/05 12:06, 12F
→
11/05 13:26, , 13F
11/05 13:26, 13F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
2
13
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章