漢諾塔程式設計問題!
1樓:
漢諾塔問題就是乙個繞口令,只要你掌握了遞迴知識,對照解題思路,你多繞幾次就會繞出來了。
2樓:網友
漢諾塔問題是乙個經典遞迴問題,首先要理解漢諾塔問題的實質,就是重複的按順序的移動disk,寫程式並不難,難在理解。上段程式很麻煩,不是乙個漂亮的程式。單步執行的話不如自己做乙個模型,按照程式的實現自己一步一步的按程式做下來就差不多理解了。
我當初也是這樣做的。這個問題的關鍵在於遞迴函式呼叫是的引數變化,不同的disk情況對應不同的引數,引數的變化規律是迴圈變化,三為乙個週期,左迴圈,這樣調換引數位置,而不改變移動實現方法,這樣來實現disk的移動。這樣即節省**又節省資源開銷,這才是遞迴程式的精髓。
3樓:清影星河
正確的程式應該這樣寫。
void hanoi( int n,char one ,char two,char three)
else }
解釋:將 n 個塔牌從 one 經過 two 全部移動到 three否則}
通過 n=3 來跟蹤,會好理解些,下面就是執行過程的,// 後面會用{}來,不要怕難,使用文字縮排,跟蹤讀下去:
hanoi(3, one, two,three)move( one, two);
hanoi( 1, three, one, two);
move( one, three);
hanoi( 2, two, one, three);
move( one, two);
hanoi( 1, one, two, three);}
遞迴演算法 漢諾塔 演示
4樓:網友
定義函式movedisc( n,fromneedle,toneedle,usingneedle)。將 fromneedle 杆上的 n 個圓盤,藉助 usingneedle 杆,移動到 toneedle 杆上。
移動n個圓盤的遞迴演算法描述如下:
movedisc ( n,fromneedle,toneedle,usingneedle )
下面是程式。
int i=0; /* 移動圓盤數量計數器 */
main( )
movedisc ( n, fromneedle, toneedle, usingneedle )
unsigned n;
char fromneedle, toneedle, usingneedle;}
5樓:網友
不急的話,週末給你寫乙個。
漢諾塔問題看不懂,有人能幫一下我嗎?看不懂那個過程,或者告訴我怎麼去想這個問題。
6樓:匿名使用者
我在校那時也不明白,後來想,等以後用到的時候在學吧。
後來工作之後發現,我竟然從沒用過遞迴。
有的時候是執行環境不支援,微控制器類的跑起來容易爆棧,或者編譯器直接就報錯。
如何呼叫庫,或者自己寫乙個庫,快速完成需求。
如何寫乙個良好的介面。
如何寫出層次清晰,功能完善的**。
如何寫出後期維護起來更容易的**。
以上這些事情反而成為了我工作中的主要內容。
我並沒有答題,關於遞迴我也自認肯定沒有其它幾位答主答的更好。
我只是在講,題主如果現在不理解,也不必強求。程式設計還有很多更好玩的東西。
7樓:賣蘿莉的店長
想要把方塊從a柱子移到c柱子,需要b柱子作為媒介,比如說,乙個方塊可以直接放到c上,但是兩個方塊就不行了,要先把小的那塊放在b柱子上,然後將第二塊方塊從a柱子移到c柱子上,再將第一塊方塊移到c柱子上,從2塊方塊開始,以後有n塊方塊,就必須要將n-1塊方塊放在b柱子上,第n塊方塊移到c上,再將n-1塊方塊移到c上。而對於n-1塊方塊,又有n-2塊方塊需要移到a或者c上,這樣第n-1塊方塊才能移到b上。核心公式就是f(n)=2^n-1次。
碼字不易,不知幫到您了沒有。
8樓:匿名使用者
假如有a,b,c三根杆,一開始全部圈在a杆,目的用漢諾塔規則藉助c杆將所有圈從a轉移到c。
乙個圈(1):1(a->b)1次。
兩個圈):1(a->c)(1次),2(a->b),1(a->c),共3次。
三個圈(a->c)(3次),3(a->b(a->c)(3次),共7次。
以此類推,假設n代表圈圈個數,z為總次數,則有:
z(n)=z(n-1)+1+z(n-1)=2*z(n-1)+1z(3)=z(2)+1+z(2)=2*3+1=7遞迴:z(3)=2*z(2)+1=2*(2*z(1)+1)+1=7
9樓:江南客棧愛發呆
趙薇演過乙個電影叫《天地英雄》,我是看了那部電影,然後明白了遞迴的含義。
c語言漢諾塔問題,C語言漢諾塔問題
關於漢諾塔這個東西是相當的抽象,我當時學習的時候看了好幾個版本的教程,也沒有搞懂,最後還是自己反覆的理解,頓悟了,所以我這裡把當時我作為初學者的想法寫給你,但是最重要的還得靠你自己的理解 1 對於void hanoi int n,char one char two,char three 這個函式,表...
c語言漢諾塔程式,C語言漢諾塔程式
將以下內容全部複製到新建的原始檔中 本人自己寫的,因為你那課本上的 沒解釋,書寫不規範,很難理解清楚,所以我直接新寫了一個完整的 附帶詳細說明 include 漢諾塔x層塔從a塔整體搬到c塔,中間臨時b塔。x層塔是從大到小往上疊放。每次移動只能移動一層塔。並且在移動過程中必須保證小層在上邊 藉助b塔...
漢諾塔問題的漢語詳細解釋,漢諾塔問題的漢語詳細解釋
漢諾塔問題 問題 首先去掉原來的神話色彩 神廟 僧侶和世界末日,來到問題的數學本質。有a b c三根柱子。a上堆放了n個盤子,每個盤子都比它下面的盤子小一些。現在要把盤子全部搬到c上去,條件是每次只能搬動一個盤子,而且任何時候都不能放在比它小的盤子上面 顯然,必須用到b作為中轉 怎麼搬動這些盤子呢?...