python實現漢諾塔問題

2021-10-05 06:57:51 字數 570 閱讀 8361

以下圖的三層漢諾塔為例,開始柱指的是開始狀態時存放所有盤子的柱子,中轉柱指的是中間狀態時暫時存放n-1個(三層就是3-1個)盤子的柱子,目標柱指的是盤子最終要移動到的柱子。這裡需要注意,開始柱,中轉柱,目標柱並不是一成不變的,而是會根據層次的不同而改變。漢諾塔問題可這麼簡單理解:要解決從下往上數第n個盤子,即從大往小數第n個盤子,首先得解決第n-1個盤子的移動,而第n-1個盤子的移動又得先解決第n-2個盤子的移動。這個過程就是遞迴過程,從而回到解決第乙個盤子如何移動的問題上。

實現的**和移動途徑如下:

def move(n,a,b,c):

if n==1:

print(a,』–>』,c)

else:

move(n-1,a,c,b)

print(a,』–>』,c)

move(n-1,b,a,c)

move(4,『a』,『b』,『c』)

python實現漢諾塔問題

count 0 defhanoi n,x,y,z 圓盤數量,起始柱子,中間柱子,目標柱子,global count if n 1 print format 1,x,z count 1 else hanoi n 1,x,z,y 把 n 1 個圓盤從x移到y上,需借助z x z y print form...

python 漢諾塔 Python漢諾塔

import turtle class stack def init self self.items def isempty self return len self.items 0 def push self,item def pop self return self.items.pop def ...

Python實現漢諾塔

原始碼 move n,a,b,c 這個函式不要理解為abc三個柱子。請這樣理解,move函式,用來完成這麼乙個任務 把n個盤子,從 源柱 通過 過渡柱 移動到 目標柱 上。即move n,source,bridge,destination 為了完成這個任務,需要將此母任務分解為三個子任務 1.把 源...