卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

漢諾塔遞歸算法圖解 漢諾塔遞歸算法?

漢諾塔遞歸算法?1//河內(nèi)塔2#包括和酒店。H>3 void Hanoi(int n,char a,char b,char c)//這里表示在b列的幫助下將a列上的圖版移到c列4{if(1==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輸入磁盤數(shù):”)

18 scanf(%d“,&n)

19 Hanoi(n,%a”,%B“,%C”)

20 return 0

21}

復(fù)制代碼

讓Hanoi塔板為D1,D2,D3,。。。DN自上而下,n>0。注意,前k個板是s(k)(k>1)遞歸。假設(shè)前n-1塊板是s(n-1)塊。要將板從a移到C,只需要使用橋B。具體的移動方法是:(1)s(n-1):a=>B(2)DN:a=>C(3)s(n-1):B=>C實際上是一個具有四個參數(shù)f(n,a,B,C)的函數(shù)。第一步和第三步實際上又回到了n-1層河內(nèi)塔的問題。以第一步為例,將前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)的步驟沒有區(qū)別,只是[bridge]B和C被交換:通過(1)、(2)、(3)總結(jié)函數(shù):(1)f(n-1,a,C,B)//參數(shù)a是原始位置,C是橋,B是目的地(2)n:a=>C//從原始位置取底板=>目的地(3)f(n-1,B,a,C)//參數(shù)B是原始位置,a是橋,C是目的地。遞歸解很容易理解。更困難的是使用非遞歸方法。實際上,所有的遞歸算法都可以轉(zhuǎn)化為非遞歸算法。一些低級語言(如匯編)沒有遞歸算法。