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,?b,?a,?c)是什么意思?還有就是a,b,c ?a,c,b ? b,a,c ?為什么順序會換?謝謝!??!
2 回答

清波
TA貢獻165條經(jīng)驗 獲得超90個贊
這個就是 函數(shù)的參數(shù)方面的問題了。?
最著名的形式參數(shù)(形參),實際參數(shù)(實參)的區(qū)別:
def?func?(a,?b): ????print(a,?b) ????func1(b,?a) ???? def?func1(x,?y): ????print?(x,?y) ???? ##?定義了兩個函數(shù)?func?和func1?其中,?定義是所用的?a,?b,?x,?y?都是形參,?而調(diào)用時傳給函數(shù)的參數(shù)就是?實參了 func(1,?2) ##?輸出 1?2 2?1 ##?解釋,?調(diào)用?func(1,?2)?這個1?和?2??就是實參。?同樣?在?func()?函數(shù)中,我們調(diào)用了?func1(b,a)?這里面的?b?和 ##?a?就是實參了?在這里是?2?和1?。
嗯, 形參和實參的 轉(zhuǎn)換, 基本就是在 函數(shù)定義的內(nèi)部 再次調(diào)用函數(shù)(如果是其本身 被稱為遞歸調(diào)用)的時候。
上面的 漢諾塔遞歸 就是這種 每次調(diào)用 都在做 形參和實參的轉(zhuǎn)換。

蕭沐123
TA貢獻2條經(jīng)驗 獲得超1個贊
這是一種遞歸調(diào)用,move(n-1,?a,?c,?b)是為了將之前的n-1個先放到b上,當這部完成后,move(n-1,?b,?a,?c)則就是將之前已經(jīng)放到b上的那n-1個再放回到c上,這里的abc都是形式參數(shù),abc順序的轉(zhuǎn)換就是將不同的值傳入遞歸函數(shù)中使其能夠執(zhí)行轉(zhuǎn)換,樓主可以先從3個的漢諾塔開始,按程序一點點的走,更便于理解遞歸
添加回答
舉報
0/150
提交
取消