漢諾塔移動(dòng)次數(shù)公式 漢諾塔問(wèn)題公式是什么?
漢諾塔問(wèn)題公式是什么?1//河內(nèi)塔2#包括和酒店。H>3 void Hanoi(int n,char a,char b,char c)//這里表示在b列的幫助下將a列上的圖版移到c列4{if(1=
漢諾塔問(wèn)題公式是什么?
1//河內(nèi)塔
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輸入磁盤(pán)數(shù):”)
18 scanf(%d“,&n)
19 Hanoi(n,%a”,%B“,%C”)
20 return 0
21}
復(fù)制代碼
河內(nèi)塔是一個(gè)迭代問(wèn)題。假設(shè)河內(nèi)塔從第一列移動(dòng)到最后一列(目標(biāo)列)的最快次數(shù)是f(x)次。顯然,f(1)=1,f(2)=3。然后我們可以把整個(gè)過(guò)程分為三個(gè)部分。一種是將第一層和第二層移動(dòng)到中間列(過(guò)渡列),最快的f(2)步驟2、將第三層移動(dòng)到最后一列(目標(biāo)列),最快的步驟是3,將第一層和第二層移動(dòng)到最后一列,最快的步驟是f(2),因此f(3)=f(2)1 f(2)=7,依此類(lèi)推,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。如果您已經(jīng)學(xué)習(xí)了序列,您可以得到更一般的遞推公式f(x1)=2*f(x)1。此外,還可以得到通式F(x)=2^x-1