漢諾塔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)這里的參數是怎么排序的呢?
2018-07-16
我明白你的意思,我也是不懂這的變量是怎么變的。邏輯其他的都懂。就是不知道這幾個變量是依據什么這樣排序的,還是這個函數就是規定“只要是借助的位置b就把它b放中間”???不懂不懂
2018-05-20
2018-04-18
其實這個很好理解,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)
希望對你有所幫助!哈哈……
2018-04-10
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。