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

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

漢諾塔move里參數如何排列的

def?move(3,?a,?b,?c):
????if?n==1:
????????print?a,'-->',c
????????return
????move(2,a,c,b)
????print?a,'-->',c
????move(2,b,a,c)

?move(2,a,c,b)
??????...
??????move(1,a,b,c)????A-->C
??????print?...????????A-->B
??????move(1,c,b,a)????C-->B
?print?...?????????????A-->C
?move(2,b,a,c)
??????...?????????
??????move(1,c,a,b)????B-->A
??????print?...????????B-->C
??????move(1,a,b,c)????A-->C

我這只是在用結果推過程,那么像move(1,c,b,a),move(1,c,a,b)這里的參數是怎么排序的呢?

正在回答

4 回答

我明白你的意思,我也是不懂這的變量是怎么變的。邏輯其他的都懂。就是不知道這幾個變量是依據什么這樣排序的,還是這個函數就是規定“只要是借助的位置b就把它b放中間”???不懂不懂

0 回復 有任何疑惑可以回復我~
漢諾塔:
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
????????}
????}
}


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

Sumh

想請問一下,第六句 Move(1,B,A,C){} //B->C 為啥會執行print語句???
2018-08-17 回復 有任何疑惑可以回復我~

其實這個很好理解,if n==1那段代碼就是move(1,A,B,C),后面的那個就跟把大象放進冰箱一樣的道理分三步:1、把n-1個盤子借助C從A-->B即move(n-1,A,C,B);2、把剩下的那一個盤子從A-->C即move(1,A,B,C)或者直接print("A-->C");3、把剛才移到B上的那n-1個盤子借助A移到C上即move(n-1,B,A,C)

希望對你有所幫助!哈哈……

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

mov(2,a,c,b)相當于要將兩個盤子由a借助c移動到b, 那就需要先將a的n-1(也就是1)個盤子借助b移動到c;即mov(1,a,b,c)? ?。另一個類似。核心思想就是如果a有N個圓盤,可以看成a有1個圓盤(底盤) + (N-1)個圓盤,首先需要把 (N-1) 個圓盤移動到 b,然后,將 a的最后一個圓盤移動到c,再將b的(N-1)個圓盤移動到c。

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

大的小彩筆 提問者

你沒明白我問的是啥,代碼知道,如何移動的也懂。我是想知道在不考慮如何移動的前提下去寫move的參數變化,例如:move(3,a,b,c)-->move(2,a,c,b)-->move(1,a,b,c)只是bc參數換位置,但是move(2,a,c,b)-->move(1,c,b,a)或者move(2,b,a,c)-->move(1,a,b,c)這是怎么變換的
2018-04-10 回復 有任何疑惑可以回復我~
#2

大的小彩筆 提問者 回復 大的小彩筆 提問者

最后那個是move(2,b,a,c)-->move(1,c,a,b)
2018-04-10 回復 有任何疑惑可以回復我~

舉報

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

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

進入課程

漢諾塔move里參數如何排列的

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

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

幫助反饋 APP下載

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

公眾號

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