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

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

請問move(4, 'A', 'B', 'C')結果為什么有CA,CB?

請問move(4, 'A', 'B', 'C')結果不是:AC? ? AB? ? BC? ? AB? ? BC? ? AB? ? BC? ?嗎?

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

??? if n == 1: ? ?

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

??????? return ? ?

??? move(n-1, a,b, c) ? ?

??? print a, '-->', b ? ?

??? print b, '-->', c ? ?


正在回答

3 回答

會提出這個問題應該是沒理解清楚原理,先來分析這個場景,三個柱子,每一步的目標都是借助第三根柱子,來達到把最底下那塊在兩根柱子間轉移的效果。一開始我們需要從a->c,所以需要把剩下的3片移到b柱上(步驟1),這時,對于a柱上的剩下3片來說,就是需要借助c柱移動到b柱上(步驟2),那么,對于再上面的兩片來說,又是借助b柱移動到c柱上(步驟3),所以一開始是ab,ac,bc(步驟3),然后ab,此時第三片到b柱上了,又要把c柱上的兩片移到b柱上,所以是ca,cb,ab(步驟2),之后也都是這個套路。

所以這個遞歸的原理就是,移4片到c,需要借助移3片到b,而移3片到b,就要借助移2片到c,以此類推

首先,算法里的abc都是不一定的,要看每一步的目標是什么

所以算法的第一步是move(n-1,a,c,b)? 意思是把a上的n-1片移到相對的b上,這樣a才能移到c上

第二部是把最后一片移到c上,所以是 a -> c??

最后一步就是把b柱上的移到c上,所以是move(n-1,b,a,c)

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

那給的答案是錯的咯

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

A --> C
A --> B
B --> C
A --> B
B --> C
A --> B
B --> C

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

舉報

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

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

進入課程

請問move(4, 'A', 'B', 'C')結果為什么有CA,CB?

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

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

幫助反饋 APP下載

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

公眾號

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