[問題] 河內塔
看板C_and_CPP (C/C++)作者aznchat100 (KG is MVP)時間14年前 (2011/07/22 13:42)推噓5(5推 0噓 5→)留言10則, 6人參與討論串3/3 (看更多)
有爬過之前的文 但是還是不怎麼了解
希望這邊的高手能幫小弟解惑
#include<stdio.h>
#include<stdlib.h>
void hanoi(int,int,int,int);
int main(void)
{
int i;
printf("總共要多少圓盤?");
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);
}
}
問題:
1.
在else那邊 我不懂為什麼盤子輸入i=3時
第一個動作進入hanoi(i-1,begin,dest,mid);
所以printf()出來為什麼會是第一個盤子從第一個塔移到第三個塔?
2.
小弟的理解是因為輸入的是3他就會跳過if然後到else
然後else那裡又會呼叫一次hanoi函式 這時候呼叫他會怎麼走
會繼續跑到printf和回頭從來還是有其他路呢?
有高手能給小弟流程圖嗎?
感激不盡!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.77.115
※ 編輯: aznchat100 來自: 118.169.77.115 (07/22 13:44)
推
07/22 13:44, , 1F
07/22 13:44, 1F
推
07/22 15:33, , 2F
07/22 15:33, 2F
推
07/22 16:20, , 3F
07/22 16:20, 3F
→
07/22 17:32, , 4F
07/22 17:32, 4F
→
07/22 17:33, , 5F
07/22 17:33, 5F
→
07/22 17:40, , 6F
07/22 17:40, 6F
推
07/23 00:19, , 7F
07/23 00:19, 7F
→
07/23 00:20, , 8F
07/23 00:20, 8F
→
07/23 01:50, , 9F
07/23 01:50, 9F
推
07/23 10:49, , 10F
07/23 10:49, 10F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章