C语言汉诺塔(又称河内塔)问题
答案:1 悬赏:20 手机版
解决时间 2021-12-01 14:27
- 提问者网友:wodetian
- 2021-12-01 06:07
C语言汉诺塔(又称河内塔)问题
最佳答案
- 五星知识达人网友:神也偏爱
- 2021-12-01 06:55
#include
void move(int n,char a,char b)
{
printf("Move disk %d from %c to %c\n",n,a,b);
}
void hanoi(int n,char a,char b,char c)
{
if(n == 1) //你缺少这个,不然递归不起来,当n==1的时候
{
move(n,a,c);
}
else
{
hanoi(n-1,a,c,b);
move(n,a,c);
hanoi(n-1,b,a,c);
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
hanoi(n,'A','B','C');
return 0;
}追问为何?这个程序我基本看不懂……追答就加了一句话你就看不懂了…你自己写的能看懂么,递归你要有个条件吧,不然一直递归,停不下来?追问不不不,这不是我写的= =,这个题目是叫我修改。
为什么加了这个就可以停了呢?追答看看这个视频吧,我用文字是讲不清楚的
void move(int n,char a,char b)
{
printf("Move disk %d from %c to %c\n",n,a,b);
}
void hanoi(int n,char a,char b,char c)
{
if(n == 1) //你缺少这个,不然递归不起来,当n==1的时候
{
move(n,a,c);
}
else
{
hanoi(n-1,a,c,b);
move(n,a,c);
hanoi(n-1,b,a,c);
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
hanoi(n,'A','B','C');
return 0;
}追问为何?这个程序我基本看不懂……追答就加了一句话你就看不懂了…你自己写的能看懂么,递归你要有个条件吧,不然一直递归,停不下来?追问不不不,这不是我写的= =,这个题目是叫我修改。
为什么加了这个就可以停了呢?追答看看这个视频吧,我用文字是讲不清楚的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯