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

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

關于漢諾塔中abc的問題

def?move(n,?a,?b,?c):????
????if?n?==?1:????
????????print('move',?a,?'-->',?c)????
????else:????
????????move(n-1,?a,?c,?b)????
????????move(1,?a,?b,?c)????
????????move(n-1,?b,?a,?c)????
move(4,?'A',?'B',?'C')

我又看到有人解釋,move(n-1, a, c, b)的意思就是:n-1個盤借c柱從a柱移動到b柱。運行的時候電腦怎么就知道這個意思...?我不理解啊.....................

正在回答

3 回答

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')

按照給的標準答案解釋吧

函數下的前三行,當減小到1時(下面的n-1個已經排到c上了)直接從a拿到c

move(n-1,?a,?c,?b)????就是先不管最下面的大環,將上面的n-1個小環全部放到b上
print?a,?'-->',?c????輸出一次將剛才不管的大環直接從a拿到c
move(n-1,?b,?a,?c)????以上操作變成a上無環,b上n-1個環,c上一個最大環,這時就相當于需要將b上的環全部放到c上,就可以看成初始問題一樣了,只是n減小了,所以再次調用函數
0 回復 有任何疑惑可以回復我~

電腦認的只是你寫的代碼,它只要找你寫的邏輯來運行。move(n-1, a, c, b)中b成了第四個參數,,a還是第二個參數。move(n, *, *, *) : ...的意思就是講第二個參數的n個盤移到第四個參數位置

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

此時c的位置傳的是B

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

舉報

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

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

進入課程

關于漢諾塔中abc的問題

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

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

幫助反饋 APP下載

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

公眾號

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