鱼C论坛

 找回密码
 立即注册
查看: 3430|回复: 10

hanoi递归问题,求教..

[复制链接]
发表于 2012-4-26 17:21:42 | 显示全部楼层 |阅读模式
1鱼币
关于递归的数值运算我还可以理解,这个hanoi塔就是搞不懂,
#include<stdio.h>
void main()
{
void hanoi(int n,char one,char two,char three);
int m;
printf("input the number of diskes:");
scanf("%d",&m);
printf("the step to move %d diskes:\n",m);
hanoi(m,'A','B','C');
}
void hanoi(int n,char one,char two,char three)
{
void move(char x,char y);
if(n==1)
{
  move(one,three);
}
else
{
  hanoi(n-1,one,three,two);     //搞不懂它递归到1之后,怎么就又返回来了。
  move(one,three);
  hanoi(n-1,two,one,three);
}
}
void move(char x,char y)
{
printf("%c-->%c\n",x,y);
}

最佳答案

查看完整内容

hanoi(n-1,one,three,two); //递归到一 说明这里执行完了 然后执行下一步。 move(one,three); //就是执行这个 hanoi(n-1,two,one,three);
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-26 17:21:43 | 显示全部楼层
hanoi(n-1,one,three,two);     //递归到一 说明这里执行完了 然后执行下一步。
   move(one,three);               //就是执行这个
   hanoi(n-1,two,one,three);
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-4-26 21:34:04 | 显示全部楼层
函数声明放在外面
当n==1时,执行if中的move,执行完后hanoi中没语句可执行不就返回了。
此时返回到n==2时的hanoi函数中。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-4-28 09:32:02 | 显示全部楼层

详细一点。。我调试的时候好像不是这样的。在想着这个问题。
我还是调试hanoi去算了。

想好了再回复楼主。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-4-28 12:43:36 | 显示全部楼层
C/C++技术交流群:149582523
欢迎c,c++的朋友们加入!期待共同学习进步!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-4-28 19:12:45 | 显示全部楼层
调用递归 最好自己学着画一画工作栈的模拟(过程是痛苦的)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-4-30 09:03:44 | 显示全部楼层
我已经明白了。。

其实你学会递归就知道怎么回事了。

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-5-2 09:17:43 | 显示全部楼层
sea 发表于 2012-4-26 21:34
函数声明放在外面
当n==1时,执行if中的move,执行完后hanoi中没语句可执行不就返回了。
此时返回到n==2时 ...

然后呢?..............
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-5-2 09:18:31 | 显示全部楼层
越野e族 发表于 2012-4-28 09:32
详细一点。。我调试的时候好像不是这样的。在想着这个问题。
我还是调试hanoi去算了。

谢谢,我也调试过了,它跳的乱七八糟,看不懂...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-5-2 09:19:28 | 显示全部楼层
越野e族 发表于 2012-4-30 09:03
我已经明白了。。

其实你学会递归就知道怎么回事了。

额,给我说说怎么回事呗,我学递归了,那个数值的我懂这个不懂啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-5-2 09:20:28 | 显示全部楼层
紫炎 发表于 2012-4-28 19:12
调用递归 最好自己学着画一画工作栈的模拟(过程是痛苦的)

额。感觉有点深奥啊..
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-14 00:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表