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

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

為什么第二個就A -->C了? A--> B只執行一次A就只剩最后一個圓盤了?

為什么答案是 A --> B A --> C B --> C 。。。 為什么第二個就A -->C了? A--> B只執行一次A就只剩最后一個圓盤了?

正在回答

2 回答

漢諾塔:
#?move(n,?a,?b,?c)表示的是有n個盤子在a柱子上,將要移到b柱子上面去
def?move(n,?a,?b,?c):
#?如果a柱子上面只有一個盤子,則直接移到c柱子上面去并輸出路徑,結束遞歸
????if?n?==?1:??
????????print?a,?'-->',?c
????????return
#?表示的是將n-1的盤子從a柱子上面移到b柱子上面去
????move(n-1,?a,?c,?b)
#?輸出最下面個盤子移從a移到c的路徑
????print?a,?'-->',?c
#?將b柱子上面的n-1個盤子移動到c柱子上面
????move(n-1,?b,?a,?c)
運算過程:
Move(4,A,B,C){
????Move(3,A,C,B){
????????Move(2,A,B,C){
????????????Move(1,A,C,B){}????//A->B
????????????print?A->C?????????//A->C
????????????Move(1,B,A,C){}????//B->C
????????}
????????print?A->B?????????????//A->B
????????Move(2,C,A,B){
????????????Move(1,C,B,A){}????//C->A
????????????print?C->B?????????//C->B
????????????Move(1,A,C,B){}????//A->B
????????}
????}
????print?A->C?????????????????//A->C
????Move(3,B,A,C){
????????Move(2,B,C,A){
????????????Move(1,B,A,C){}????//B->C
????????????print?B->A?????????//B->A
????????????Move(1,C,B,A){}????//C->A
????????}
????????print?B->C?????????????//B->C
????????Move(2,A,B,C){
????????????Move(1,A,C,B){}????//A->B
????????????print?A->C?????????//A->C
????????????Move(1,B,A,C){}????//B->C
????????}
????}
}


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

move(n-1,a,c,b)是以C為輔助樁,把A上的n-1個放到B上;

move(n-1,b,a,c)是以A為輔助樁,把B上的n-1個放到C上;


第二個A -->C,A剩下最后一個移動到C,所以是A->C;每次移動式借助另外一個樁,把最底下的移動到C

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

舉報

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

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

進入課程

為什么第二個就A -->C了? A--> B只執行一次A就只剩最后一個圓盤了?

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

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

幫助反饋 APP下載

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

公眾號

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