這答案不對嗎
def move(n, a, b, c):
? ? if n==1:
? ? ? ? print ('A-->C')
? ? ? ? move(n-1, a, b, c)
? ? elif n>1:
? ? ? ? print ("A-->B")
? ? ? ? move(n-1, a, b, c)
? ? ? ? print ("B-->C")
? ? ? ? ? ?
move(4, 'A', 'B', 'C')
def move(n, a, b, c):
? ? if n==1:
? ? ? ? print ('A-->C')
? ? ? ? move(n-1, a, b, c)
? ? elif n>1:
? ? ? ? print ("A-->B")
? ? ? ? move(n-1, a, b, c)
? ? ? ? print ("B-->C")
? ? ? ? ? ?
move(4, 'A', 'B', 'C')
2019-09-24
舉報
2019-11-03
當n==1的時候,你的遞歸已經到了最后一個數了,你再move(n-1)就是move(0)了。你這個代碼會無限執行下去
2019-09-24
漢諾塔 (http://baike.baidu.com/view/191666.htm) 的移動也可以看做是遞歸函數。
我們對柱子編號為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)