漢諾塔 ( 的移動也可以看做是遞迴函式。
我們對柱子編號為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
如下def move(n,a,b,c):
if n==1:
print a,'-->',c #這其實是只有乙個圓盤需要從a到c的情況。所有遞迴,最終都是走到這一步。
return #這是結束遞迴,省略了none。沒有這句的話,遞迴沒辦法結束。
move(n-1,a,c,b) #將a柱的n-1個盤移到b柱,這裡毫無爭議。注意形參順序變化了。
print a,'-->',c #這句話才是第乙個柱子的第n個圓盤移動到目標柱子。
move(n-1,b,a,c) #過渡柱子b上(n-1)個圓盤b遞迴移動到目標柱子c
move(4, 'a', 'b', 'c')
Python學習日記 遞迴函式
我們在中學階段就遇到過數列通項問題,通項科an可寫作 an sn sn 1 sn表示前n項的和 移項後,可表示為 sn sn 1 an 在這裡,以乙個數列的前3項為例 s3 s2 a3 s2 s1 a2 即 s3 s1 a2 a3 那麼,任何sn都可以看成s1 引數項。引數項已知,知道s1就可求sn...
Python學習筆記 8 6 函式 遞迴
遞迴 函式自己呼叫自己 遞迴最多遞迴999次。count 0 def say global count count 1 print say print count say say 自己呼叫自己死迴圈,最多列印999次 用遞迴迴圈 能用迴圈時不要用遞迴,因為遞迴的效率不高。def test1 num ...
python遞迴函式例項 python遞迴函式
python遞迴函式 什麼是遞迴?遞迴,就是在函式執行中自己呼叫自己 示例 def recursion n 定義遞迴函式 print n 列印n recursion n 1 在函式的執行種呼叫遞迴 recursion 1 呼叫函式 這個函式在不斷的自己呼叫自己,每次呼叫n 1,看下執行結果 998t...