亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

這個到底是怎么順序啊 我好暈

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(5, 'A', 'B', 'C')


正在回答

6 回答

為什么我的感覺跟各位不一樣呢?

move函數幾個形式參數:第一個表示需要移動的圓盤數,第二個(不一定是a)表示準備移走的柱子,第三個表示過渡柱子,第四個參數表示目標柱子。

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



3 回復 有任何疑惑可以回復我~
#1

我在山那邊

你的理解是對的呀~
2016-02-10 回復 有任何疑惑可以回復我~
#2

Dualpit

你這個才是對的
2016-03-17 回復 有任何疑惑可以回復我~
#3

慕粉3220155

我有一個問題。。。。那為什么會打出B --> C呢??能麻煩你解釋下嗎。。。
2016-04-26 回復 有任何疑惑可以回復我~

我用記事本寫了個具體的過程 不知道你看不看得懂http://img1.sycdn.imooc.com//566ebb6f0001349b00370663.jpg

0 回復 有任何疑惑可以回復我~

def move(n, a, b, c):

if n == 1:

print (a,'-->',c)#將A柱的最后1個盤移到C柱

return

move(n-1,a,c,b)#將A柱的N-1個盤移到B柱,

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

move(n-1,b,a,c)#將B柱的N-1個盤移到C柱

move(4, 'A', 'B', 'C')


0 回復 有任何疑惑可以回復我~

其實就是把開始A柱的n-1個盤子挪到B上,在move(n-1,a,c,b)中的b就是開始函數定義的c,因為這是對定義的函數的調用。因為函數開始定義的就是把a的所有都挪到c上。

0 回復 有任何疑惑可以回復我~

def move(n, a, b, c):

? ? if n==1:???????#第一步很容易理解,就是如果只有一個,就把a直接挪到c

? ? ? ? print a,'-->',c

? ? ? ? return

? ? move(n-1,a,c,b)#就是把之前的n-1個都先放到b上

? ? print a,'-->',c #這里雖然說是print a,'-->',c,實質是把東西從A柱挪到B柱

? ? move(n-1,b,a,c)#由于上面已經把n-1個都放到b上了,此時就是把b全部挪到c上。

move(5, 'A', 'B', 'C')

1 回復 有任何疑惑可以回復我~
#1

慕姐4424294

那個 問下啊 求解釋下 move(n-1,a,c,b) print a,'-->',c move(n-1,b,a,c) 這里面的 這句 print a,'-->',c 到底是什么意思
2015-10-23 回復 有任何疑惑可以回復我~

漢諾塔問題

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758398    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

這個到底是怎么順序啊 我好暈

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號