Python遞迴例子 漢諾塔問題

2021-07-10 07:27:19 字數 521 閱讀 8999

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

對柱子編號為a, b, c,將所有圓盤從a移到c可以描述為:如果a只有乙個圓盤,可以直接移動到c;如果a有n個圓盤,可以看成a有1個圓盤(底盤) + (n-1)個圓盤,首先需要把 (n-1) 個圓盤移動到 b,然後,將 a的最後乙個圓盤移動到c,再將b的(n-1)個圓盤移動到c。

def

move

(n, a, b, c):

if n ==1:

print(a, '-->', c)

return

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

print(a, '-->', c)

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

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

#如果a有n個圓盤,可以看成a有1個圓盤(底盤) + (n-1)個圓盤,首先需要把 (n-1) 個圓盤移動到 b,

#然後,將 a的最後乙個圓盤移動到c,再將b的(n-1)個圓盤移動到c。

漢諾塔問題(遞迴)

題目描述 對於傳統的漢諾塔遊戲我們做乙個拓展,我們有從大到小放置的n個圓盤,開始時所有圓盤都放在左邊的柱子上,按照漢諾塔遊戲的要求我們要把所有的圓盤都移到右邊的柱子上,請實現乙個函式列印最優移動軌跡。給定乙個int n,表示有n個圓盤。請返回乙個string陣列,其中的元素依次為每次移動的描述。描述...

漢諾塔問題(遞迴)

問題 漢諾塔問題 解法 遞迴求解 思路 先把n 1從a移動b 在把第n個從a移到c 使用遞迴使得 變得簡單 複雜度 2的n次方 1 includeint step 1 void hanoi int level,char a,char b,char c 1 當盤子數大於1時,先把n 1個從a借助c移動...

漢諾塔問題(遞迴)

漢諾塔 在印度,有這麼乙個古老的傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,有三根柱子。印度教的主神梵天在創造世界的時候,在其中一根柱子上從下到上地穿好了由大到小的64片金盤,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的法則移動這些金盤 一次只移動一片,不管在哪根柱子上,小片必須在...