當前位置:首頁 » 編程語言 » python漢諾塔演算法

python漢諾塔演算法

發布時間: 2022-07-08 06:44:17

A. python利用遞歸解決漢諾塔問題,求大神解釋一下代碼

這是一個典型的遞歸程序
當只有一層的時候,直接把x放到z上結束
當大於1層的時候,先把x和z放到y上,然後繼續遞歸
把y放到x上,然後放到z上,結束處理

B. python漢諾塔非遞歸

python漢諾塔非遞歸,運用list和function知識的解答

無論stack還是recursion都是從漢諾塔的原理去解決問題,但如果已經想清楚漢諾塔的原理,其實只用把答案print出來就行了

先找規律:

一層:A-->C


兩層:A-->B

-------

A-->C

-------

B-->C


三層:A-->C

A-->B

C-->B

-------

A-->C

-------

B-->A

B-->C

A-->C


注意到n層漢諾塔有(2**n) - 1 個步驟,而中間的一步(兩個分割線之間)都是「A-->C」,中間的這一步將這一層漢諾塔的解分為上下兩個部分

仔細觀察,上面一部分是將上一層的解中所有的B,C交換,下面一部分是將上一層的解中所有的A,B交換

例如第二層是:

A-->B

A-->C

B-->C

第三層上部分就將第二層的解的C換成B,B換成C,即得出:

A-->C

A-->B

C-->B

第三層下部分就將第二層的解的A換成B,B換成A,即得出:

B-->A

A-->C

C-->B

這個規律同樣適用於第一層,和以後的所有層

然後就好辦了,代碼如圖:

代碼

其中convertAB,convertBC就是AB交換,BC交換的函數,這兩個函數可以自己定義,用中間變數即可

C. python的漢諾塔問題

把n-1的盤看成一個整體。漢諾塔的操作:n-1的盤全部從x移動到y,最後一個盤子從x移動到z,再把n-1的盤從y移動到z。大概這個意思。

D. python解決漢諾塔問題

解漢諾塔最簡單的做法就是遞歸:

類似如何將大象裝進冰箱:1)將冰箱門打開;2)把大大象放進去;3)把冰箱門關上……

我們將所有的盤都在同一個桿上從大到小排列視為【完美狀態】,那麼,目標就是將最大碟片為n的完美狀態從a桿移到b桿,套用裝大象的思路,這個問題同樣是三步:

1)把n-1的完美狀態移到另一個桿上;

2)把n移到目標桿上;

3)把n-1的完美狀態移到目標桿上。

如下:

E. 利用python編程解決漢諾塔問題,例如移動64層漢諾塔需要多少時間

那麼好多人會問64個圓盤移動到底會花多少時間?那麼古代印度距離現在已經很遠,這64個圓盤還沒移動完么?我們來通過計算來看看要完成這個任務到底要多少時間?
我們首先利用數學上的數列知識來看看F(n=1)=1,F(n=2)=3,F(n=3)=7,F(n=4)=15……F(n)=2F(n-1)+1;
我們使用數學歸納法可以得出通項式:F(n)=2^n-1。當n為64時F(n=64)=18446744073709551615。
我們假設移動一次圓盤為一秒,那麼一年為31536000秒。那麼18446744073709551615/31536000約等於584942417355天,換算成年為5845.54億年

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:432
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:743
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:146
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:235
java駝峰 發布:2025-02-02 09:13:26 瀏覽:651
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726