| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 342 人关注过本帖
标题:关于汉诺干塔问题的一些疑问
取消只看楼主 加入收藏
奋斗猪
Rank: 2
来 自:奋斗的途中
等 级:论坛游民
帖 子:43
专家分:91
注 册:2012-7-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
关于汉诺干塔问题的一些疑问
之前看过汉诺塔的一个思路是这样的。先把n-1个从f通过t到b,然后把第n个从f到t;最后把n-1个从b通过f到t。
写成代码为
int hanoi(int n,char f,char b,char t){
    hanoi(n-1,f,t,b);
    printf("%c => %c\n",f,t);
    hanoi(n-1,b,f,t);
}

我很纠结的是他为什么可以有这样的思路?
这样的思路怎么写成这样的代码呢?

我这样想为什么就不可以了?
我先把n-1个从f通过t移到b,然后把第n个从f移到t;再同样的道理先把n-1个从b通过t移到f,再把第n个从b移到t;(这里我不懂的是他为什么可以把剩下的一次移过去)以此递推
写成代码为
int hanoi(int n,char f,char b,char t){
    hanoi(n-1,f,t,b);
    printf("%c => %c\n",f,t);
    hanoi(n-1,b,t,f);
    printf("%c => %c\n",b,t);
}

这里运行结果错误,是不是柱子也应该跟着动呢?

2012-07-13 01:10
奋斗猪
Rank: 2
来 自:奋斗的途中
等 级:论坛游民
帖 子:43
专家分:91
注 册:2012-7-4
收藏
得分:0 
回复 3楼 demonleer
恩恩,落写了一个if(n).

贵在坚持!
2012-07-13 22:27
奋斗猪
Rank: 2
来 自:奋斗的途中
等 级:论坛游民
帖 子:43
专家分:91
注 册:2012-7-4
收藏
得分:0 
回复 2楼 peach5460
这个我刚学c,还没接触到数据结构和算法。我找找资料看看去

贵在坚持!
2012-07-13 22:30
快速回复:关于汉诺干塔问题的一些疑问
数据加载中...
 
   



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

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