C語言實現Hanoi(漢諾塔)問題的遞迴求解

2021-08-15 04:32:36 字數 520 閱讀 4644

漢諾塔問題是乙個解決方法滿足遞迴結構的典型問題,通過這個例子的學習,可以很好地理解遞迴的概念。而且利用高中所學的數列知識,可以求出對應n個圓盤數目,需要移動的步數,可以發現當n=64時,移動步數已經是比天文數字還天文數字的天文數字。

#include

//hanoi問題的遞迴求解

void main()

void towerofhanoi(int n,char from,char to,char aux)

//只有乙個圓盤直接從第乙個柱子移到第三個柱子

towerofhanoi(n-1,from,aux,to);//圓盤數目大於1時用第三個柱子過渡,把第乙個柱子的n-1個圓盤放到第二個上面

printf("%d from %c to %c\n",n,from,to);//將第乙個柱子上最下面的圓盤放到第三個柱子

towerofhanoi(n-1,aux,to,from);//將已經放到第二個柱子上的n-1個圓盤,通過第乙個柱子做過渡,放到第三個柱子上面

}

漢諾塔問題(Hanoi塔)

1.將from柱最上面的movesum 1個圓盤移動到by柱 借助to柱 2.將from柱上剩下的那1個圓盤直接移動到to柱 3.將by柱上的movesum 1個圓盤移動到to柱 借助from柱 int sumofplates 4 總的盤子數目 int sum 3 初始時各柱子上盤子數目 enum ...

漢諾塔問題 Hanoi

描述 一 漢諾塔問題 問 如何移?最少要移動多少次?漢諾塔示意圖如下 三個盤的移動 二 故事由來 法國數學家愛德華 盧卡斯曾編寫過乙個印度的古老傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片...

C語言實現漢諾塔問題

革啟部落格,革啟網,袁歡,袁歡的部落格,袁歡部落格 版本 vs2019社群版 功能 c語言漢諾塔問題 include void move char x,char y void move char x,char y void hannota int n,char one,char two,char t...