qq351317878 发表于 2014-11-12 13:51:04

汉诺塔 递归算法的问题

我自己有点儿眉目了   。但是思路老是断了,太复杂 ,老是把前面思路搞混乱了大家有没程序流程图,或者推荐点不错的资料给我学习下
用c调试有点难看懂   



谢谢各位大大{:5_92:}摸摸大

仰望天上的光 发表于 2014-11-12 13:51:05

...这个还有什么思路吗。。。
假设你已经知道了如何将n-1个盘子从三根棍子中的一个搬到另一个,问如何将n-1个盘子从三个盘子中的一个三根棍子中的一个搬到另一个
假设三根棍子编号A,B,C,要将n个盘子从A搬到B,中间可以使用棍子C
用C语言代码表示就是hanno(n,'a','b','c');//void hanno(int nums, char from, char to, char pass);
你只要
1)将n-1个盘子从A搬到C,用C语言表示:hanno(n-1,'a','c','b');
2)将一个盘子从A搬到B,用C语言伪代码表示:打印:将一个盘子从from搬到to
3)将n-1个盘子从C搬到B,用C语言表示:hanno(n-1,'c','b','a');
就OK了.
剩下就是递归的初始情况,当n=0的时候什么都不做

qq351317878 发表于 2014-11-12 15:57:22

仰望天上的光 发表于 2014-11-12 13:51
...这个还有什么思路吗。。。
假设你已经知道了如何将n-1个盘子从三根棍子中的一个搬到另一个,问如何将n- ...

谢谢,{:5_92:}
页: [1]
查看完整版本: 汉诺塔 递归算法的问题