递归算法流程图

时间:2024-11-17 17:17:58编辑:笔记君

汉诺塔递归算法是什么?

如下: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上。

汉诺塔递归算法是什么?

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,不能无限制地调用本身,须有个出口,化简为非递归状况处理。在数学和计算机科学中,递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其他所有情况都能被还原为其基本情况。以上内容参考:百度百科-递归公式

上一篇:九阴真经副本

下一篇:没有了