python之漢諾塔問題

2021-08-21 20:33:42 字數 471 閱讀 3365

關於漢諾塔問題不再贅述,主要是談談我的理解。

貼一段**:

def

move

(n, a, b, c):

#定義move()。所有的盤子(n個)初始都堆在a上,不妨將n看作工作量,a,b,c代表三個位置。

if n == 1:

print(a,'-->',c) #只有乙個盤子時,直接從a移動到c

else:

move(n-1,a,c,b) #第乙個堆在c上的應該是a最底層的盤子,在此之前,n-1個盤子只能在b上!

move(1,a,b,c) #好了,這時a只有(n=1)的工作量,a移動到c

move(n-1,b,a,c) #工作量已經減少到n-1了.事實上,這時我們的目標已經不是a-->c了而是b-->c!工作量已經從n變成了n-1!再呼叫move(n-1,b,a,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 ...