漢諾塔遞歸算法c語(yǔ)言 漢諾塔遞歸算法?
漢諾塔遞歸算法?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 tower可以理解為移動(dòng)塔的游戲,將n層塔從一列移動(dòng)到另一列
2。這是河內(nèi)塔(n,a,c)的遞歸原型——n層塔從一列移到c列;每次你必須返回這個(gè)原型時(shí),它被認(rèn)為是遞歸完成
!3. 在中間B柱的幫助下,河內(nèi)塔的原型被寫為hunnuota(n,a,B,c)-n層塔在B柱的幫助下從a柱移動(dòng)到c柱,這應(yīng)該被理解;
4。遞歸需要一個(gè)出口,這是控制條件。當(dāng)n=1時(shí),塔可以直接從a移到C,C是出口
5。當(dāng)n>1時(shí),這一步是理解漢諾塔遞歸的關(guān)鍵,它必須形成n-1層移到C柱的形式,可分為三步:
A.如果n層不能同時(shí)移動(dòng),可以理解為先將A上面的n-1層移到B柱
Ba柱,塔的剩余n層移到C柱,
C,然后在B列上形成n-1層移動(dòng)到C列——
遞歸完成