2016 - 2025

感恩一路有你

汉诺塔递归算法图解 汉诺塔的递归算法不理解?

浏览量:3107 时间:2021-03-15 09:04:08 作者:admin

汉诺塔的递归算法不理解?

让河内塔板为D1、D2、D3,。。。DN从上到下,(n>0)记住,前k个板是s(k)(k>1)递归。假设前n-1个板是s(n-1)。要把板从a移到C,我们只需要使用桥B。具体的移动方法如下:(1)s(n-1):a=>B(2)DN:a=>C(3)s(n-1):B=>C实际上是一个有四个参数f(n,a,B,C)的函数。第一步和第三步实际上又回到了n-1层河内塔的问题。以第一步为例,将前n-2个板看作一个整体s(n-2),问题变成将板从a移到B,此时需要以C为桥。移动方法如下:(4)s(n-2):a=>C(5)d(n-1):a=>B(6)s(n-2):a=>C(5)d(n-1):a=>B(6)s(n-2):s(n-1):a=>C实际上,C=>B和(1)、(2)、(3)的步骤没有区别,只是[bridge]B和C被交换:通过(1)、(2)、(3)总结函数:(1)f(n-1,a,C,B)//参数a是原始位置,C是桥,B是目的地(2)n:a=>C//从原始位置取底板=>目的地(3)f(n-1,B,a,C)//参数B是原始位置,a是桥,C是目的地。递归解很容易理解。更困难的是使用非递归方法。实际上,所有的递归算法都可以转化为非递归算法。一些低级语言(如汇编)没有递归算法。

如何理解汉诺塔递归?

河内塔可以理解为移动塔的游戏,移动n层塔从一个支柱到另一个

2。这是河内塔的递归原型,汉诺塔(n,a,c)-n层塔从一根柱子移动到c柱;每次你必须返回到这个原型,它被认为是递归完成

!3. 在中间B柱的帮助下,河内塔的原型被写为hunnuota(n,a,B,c)-n层塔在B柱的帮助下从a柱移动到c柱,这应该被理解;

4。递归需要一个出口,这是控制条件。当n=1时,塔可以直接从a移到C,C是出口

5。当n>1时,这一步是理解汉诺塔递归的关键,它必须形成n-1层移到C柱的形式,可分为三步:

A.如果n层不能同时移动,可以理解为先将A上面的n-1层移到B柱

Ba柱,塔的剩余n层移到C柱,

C,然后在B列上形成n-1层移动到C列——

递归完成

汉诺塔递归算法图解 汉诺塔递归算法 hanoi非递归

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。