| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 904 人关注过本帖
标题:关于汉诺塔问题
只看楼主 加入收藏
foxtt123
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-3-26
收藏
 问题点数:0 回复次数:8 
关于汉诺塔问题

#include<stdio.h>
void move(char x,char y)
{printf("%c-->%c\n",x,y);
}
void hanoi(int n,char one,char two ,char three)
{if(n==1)move(one,three);
else
{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
main()
{
int m;
printf("input the number of diskes:");
scanf("%d",&m);
printf("The step to moving %3d diskes:\n",m);
hanoi( m,'A','B','C');
}

我怎么没搞不懂程序的运行过程
在脑袋里模拟不出来
为什么这样运行啊~~~
它是怎么一步一步求解的呢???

请教各位高手了

搜索更多相关主题的帖子: 汉诺塔 
2007-03-30 01:58
cotwin
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-12-21
收藏
得分:0 
输个小一点的数比如3试一试看.
也就是执行函数hanoi(3,'A','B','C'),3==1不成立,执行hanoi(2,A,C,B),move(A,C)(即A-->C),hanoi(2,B,A,C).
...
2007-03-30 09:10
w362034710
Rank: 1
等 级:新手上路
帖 子:169
专家分:0
注 册:2006-12-2
收藏
得分:0 
确实从小规模问题想起..这种递归算法不要想的太复杂....
2007-03-30 17:57
foxtt123
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-3-26
收藏
得分:0 

谢谢楼上
二位,我在仔细想想,一步一步来


新手&菜鸟
2007-03-31 11:25
啊龙112
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-2-20
收藏
得分:0 
看清华大学的C语言教材,上面有详细讲解啊。
2007-03-31 22:21
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
先把递归函数搞懂....

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-03-31 22:23
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 

所谓递归只要考虑好1,n-1,n之间的关系就好了
如果想不明白可以多考虑一个,即1,2,n-1,n


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-31 22:54
jabyshen
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-2-16
收藏
得分:0 
回复:(foxtt123)关于汉诺塔问题
http://blog.csdn.net/jabyshen007/archive/2007/03/18/1532808.aspx
比较详细

2007-04-01 00:23
快速回复:关于汉诺塔问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.074432 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved