㈠ 汉诺塔分治递归算法解释!
hanoi中的参数:从A(源)通过B(中转)移动到C(目的)
先把n-1个从A通过C移动到B:hanoi(n-1,A,C,B,time);
再把最后那个从A移到C:move(A,C);
然后把那n-1个从B通过A移到C:hanoi(n-1,B,A,C,time)
注意每一步的目的是什么
㈡ 汉诺塔递归算法是什么
汉诺塔问题实际上就是要将柱子A上由小到大排列的圆环按照相同的大小顺序移动到柱子C,之间的过程可以使用柱子B。
其递归的归纳思想是这样的:
(1)首先,当只有一个盘子的时候只需要将A上的1号盘子移动到C上就行了
(2)当有2个盘子在A上的时候,需要将A上的1号盘子(由上往下数)移动到B上,再将A上的2号盘子移动到C上,之后将B上的1号盘子移动到C上
(3)当有3个盘子在A上的时候,需要将A上的1号和2号盘子移动到B上(需要借助C),之后将A上的3号盘子移动到C上,再将B上的盘子移动到C上(需要借助A)
(...)以此类推
(N)当有N个盘子在A上的时候,需要将A上的N-1个盘子移动到B上(需要借助C),之后将A上的第N个盘子移动到C上,再将B上的盘子移动到C上(需要借助A)
起源
汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。
大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
㈢ 汉诺塔递归算法是什么
hanot (n-1,b,a,c);(解释:在把B塔上的(n-1))个借助A塔移动到C塔)
为了实现 n个盘从 借助c 从a 移动到 b
思路如下:
首先考虑极限当只有一个盘的时候,盘直接从 a -> b即可。
当有2个盘的时候,把1号盘从a -> c 然后 把2号盘 a->b 再 把 2好盘从 c - > b。
当有n个盘的时候,把 n-1个 盘 借助 b 移动到 c 然后将 n号盘从 a -> b。
这时候只要将 n-1想办法从c移动到 b 借助 a 那么就可以先把 n-2个盘借助b移动到a。
递归,就是在运行的过程中调用自己。
构成递归需具备的条件:
1,子问题须与原始问题为同样的事,且更为简单;
2,不能无限制地调用本身,须有个出口,化简为非递归状况处理。
在数学和计算机科学中,递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其他所有情况都能被还原为其基本情况。
以上内容参考:网络-递归公式
㈣ 汉诺塔递归算法是什么
如下:
1、汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。
大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
2、抽象为数学问题:从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,现要求将A柱子上的圆盘移到C柱子上去,期间只有一个原则:一次只能移到一个盘子且大盘子不能在小盘子上面,求移动的步骤和移动的次数。
算法分析(递归算法):
实现这个算法可以简单分为三个步骤:把n-1个盘子由A 移到 B;把第n个盘子由 A移到 C;把n-1个盘子由B 移到 C。从这里入手,在加上上面数学问题解法的分析,我们不难发现,移到的步数必定为奇数步。
1、中间的一步是把最大的一个盘子由A移到C上去。
2、中间一步之上可以看成把A上n-1个盘子通过借助辅助塔(C塔)移到了B上。
3、中间一步之下可以看成把B上n-1个盘子通过借助辅助塔(A塔)移到了C上。
㈤ 汉诺塔递归算法是什么
汉诺塔是经典递归问题:
相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘。
游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。
如果A只有一个(A->C)。
如果A有两个(A->B),(A->C),(B->C)。
如果A有三个(A->C),(A->B),(C->B),(A->C),(B->A),(B->C),(A->C)。
如果更多,那么将会爆炸式增长。
递归:就是函数自己调用自己。 子问题须与原始问题为同样的事,或者更为简单;递归通常可以简单的处理子问题,但是不一定是最好的。
其实递归在某些场景的效率是很低下的。尤其是斐波那契.从图你就可以发现一个简单的操作有多次重复。因为它的递归调用俩个自己。那么它的递归的膨胀率是指数级别的,重复了大量相同计算。
起源:
汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。
大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。