Python寫的漢諾塔問題

2021-06-27 00:24:22 字數 651 閱讀 9498

漢諾塔 ( 的移動也可以看做是遞迴函式。

我們對柱子編號為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

一開始我沒有理解給的函式定義裡的a,b,c是什麼意思,後來我理解了,a代表的是起始點,c代表的是終點,而b代表的就是中轉點,那麼我們再仔細的閱讀一下題目就能很容易的寫出程式了。

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 漢諾塔 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 漢諾塔問題

最近被漢諾塔的python 遞迴給迷暈,本想搞個程式除錯,但sublimetext用的不是很熟,參考了很多大佬的博文,需要總結下以防往後忘記 關於理解 流程,其實主要關注兩點 1 形參實參注意別搞混了 2 函式呼叫後都是要返回的,從哪個入口進去執行最後執行完程式是要返回回原來的入口,再執行時要注意開...

漢諾塔問題(python)

def hanoi n,a,b,c 將n個圓盤從a經過b移到c if n 0 圓盤數大於0 hanoi n 1,a,c,b 將n 1個圓盤從a經過c移到b print format a,c 將a上最底部的圓盤移到c hanoi n 1,b,a,c 將n 1個圓盤從b經過a移到c hanoi 3,a ...