汉诺塔移动次数公式 汉诺塔问题公式是什么?
汉诺塔问题公式是什么?
1//河内塔
2#包括和酒店。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)//move n-1 plates on column a to column B with the column 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输入磁盘数:”)
18 scanf(%d“,&n)
19 Hanoi(n,%a”,%B“,%C”)
20 return 0
21}
复制代码
河内塔是一个迭代问题。假设河内塔从第一列移动到最后一列(目标列)的最快次数是f(x)次。显然,f(1)=1,f(2)=3。然后我们可以把整个过程分为三个部分。一种是将第一层和第二层移动到中间列(过渡列),最快的f(2)步骤2、将第三层移动到最后一列(目标列),最快的步骤是3,将第一层和第二层移动到最后一列,最快的步骤是f(2),因此f(3)=f(2)1 f(2)=7,依此类推,f(4)=f(3)1 f(3)=15 f(5) =f(4)1f(4)=31f(6)=f(5)1f(5)=63f(7)=f(6)1f(6)=127f(8)=f(7)1f(7)=255 f(9)=f(8)1f(8)=511ps。如果您已经学习了序列,您可以得到更一般的递推公式f(x1)=2*f(x)1。此外,还可以得到通式F(x)=2^x-1
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。