2016 - 2024

感恩一路有你

什么是汉诺塔 汉诺塔1到9最快分别是几次。可以告诉我计算方法吗?

浏览量:2147 时间:2021-03-12 12:55:53 作者:admin

汉诺塔1到9最快分别是几次。可以告诉我计算方法吗?

河内塔是一个迭代问题。假设河内塔从第一列移动到最后一列(目标列)的最快次数是f(x)。显然,f(1)=1,f(2)=3。然后我们可以把整个过程分为三个部分。首先,我们可以将第一层和第二层移动到中间列(过渡列),用最快的f(2)步骤2,将第三层移动到最后一列(目标列),最快的步骤是3,将第一层和第二层移动到最后一列,最快的步骤是f(2),因此f(3)=f(2)1f(2)=7,依此类推,f(4)=f(3)1f(3)=15 f(5)=f(4)1 f(4)=31 f(6)=f(5)1 f(5)=63 f(7)=f(6)1 f(6)=127 f(8)=f(7)1 f(7)=255 f(9)=f(8)1 f(8)=511 PS。如果学习了序列,则可以得到更一般的递推公式f(x1)=2*f(x)1。此外,还可以得到通式F(x)=2^x-1

汉诺塔递归算法?

1//河内塔

2#include<stdio。H>

3 void Hanoi(int n,char a,char b,char c)//这里的意思是在b列的帮助下将a列上的图版移到c列

4{if(1)==n)//如果是图版,将a列上的图版移到c列

5{

6 printf(%c-->%cn,a,c)

7}

8 else

9{

10 Hanoi n-1,a,c,b)//移动借助C列

11 Printf(%C-->%CN“,a,C)//将a列的最后一块板移到C列

12 Hanoi(N-1,B,a,c) //然后将B列上的N-1个板移到c

13}

14}

15 int main()

16{int N

17 printf(“input the number of disks:”)

18 scanf(%d“,&n)

19 Hanoi(N,“a”,“B”,“c”)

20 return 0

21}

]复制代码

理论上是可能的,但是有些算法使用递归描述将更加简洁和清晰,尽管性能比迭代慢。目前,一些用递归转化为迭代的算法比较复杂,如典型的汉诺塔问题。虽然在线流程图例已通过迭代求解,但其正确性尚未得到研究者的证实。目前,递归仍然被广泛地用于实现它。

什么是汉诺塔 迭代算法的计算步骤 汉诺塔递归算法图解

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