不是很懂 求大神詳細解答
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')
代碼 是這樣 前幾句 還是懂的 ?就是 這三句
? ? move(n-1, a, c, b)
? ? print a, '-->', c
? ? move(n-1, b, a, c)
?實在 看不懂 ?有人解釋 ?說 第一個是 把n-1個盤子 放在b上 ?可是我不懂為啥寫成move(n-1,a,c,b)啊 為啥寫成這樣啊
2015-10-24
這個是遞歸的寫法,執行到這一行時,python解釋器會去查找move方法,然后找到后,將值代入,又繼續運行到這里,然后就是move(n-2,a,c,b)了(其實仍然是n-1,只是相當于第一次來說,是n-2),這樣一直執行,直到n=1.然后就將a移到了c上,然后其他的n-1個移到了b上,這時,move(n-1, a, c, b)執行完了,然后又一直返回,返回,返回。。。因為遞歸里調用了很多move方法嘛,然后繼續執行下面的代碼,需要的就是將b上的n-1個通過a移動c上,是不是又是相同的遞歸么,只是參數變了,對吧。。大概就是這么個意思,可能有點難以理解哈,多理解下,最好是拿個筆一步步的把函數執行的過程在紙上畫出來,然后就應該可以理解了