python下實現漢諾塔

2022-07-26 19:45:12 字數 895 閱讀 8745

漢諾塔是印度乙個古老傳說的益智玩具。漢諾塔的移動也可以看做是遞迴函式。

我們對柱子編號為a, b, c,將所有圓盤從a移到c可以描述為:

如果a只有乙個圓盤,可以直接移動到c;

如果a有n個圓盤,可以看成a有1個圓盤(底盤) + (n-1)個圓盤,首先需要把 (n-1) 個圓盤移動到 b,然後,將 a的最後乙個圓盤移動到c,再將b的(n-1)個圓盤移動到c。

請編寫乙個函式,給定輸入 n, a, b, c,列印出移動的步驟:

move(n, a, b, c)

例如,輸入 move(2, 『a』, 『b』, 『c』),列印出:

a –> b

a –> c

b –> c

背景資料:

漢諾塔:漢諾塔(又稱河內塔)問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。

**實現方式如下:

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

if n==1:

print a,'-->',c

return

else:

move(n-1,a,c,b) #首先需要把 (n-1) 個圓盤移動到 b

move(1,a,b,c) #將a的最後乙個圓盤移動到c

move(n-1,b,a,c) #再將b的(n-1)個圓盤移動到c

move(4, 'a', 'b', 'c')

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.把 源...

漢諾塔python實現

def hanoi height,left,center,right 漢諾塔,將高為height的塔從left借助center移到right if height1 一層漢諾塔,直接從left到right print 第 層 從 format height,left,right else 大於等於兩層...