為啥這個只輸出a-->b
def move(n, a, b, c):
? ? if n == 1:
? ? ? ? print a,'-->',c
? ? ? ? return none
? ? else:
? ? ? ? move(n-1,a,c,b)
? ? ? ? move(1,a,b,c)
? ? ? ? move(n-1,b,a,c)
move(4, 'a', 'b', 'c')
def move(n, a, b, c):
? ? if n == 1:
? ? ? ? print a,'-->',c
? ? ? ? return none
? ? else:
? ? ? ? move(n-1,a,c,b)
? ? ? ? move(1,a,b,c)
? ? ? ? move(n-1,b,a,c)
move(4, 'a', 'b', 'c')
2016-08-02
舉報
2016-08-02
去掉return none,一旦執行rerurn,程序立馬停止。
因為無論如何遞歸,最底層的函數必定最先輸出n==1時的情況,之后就return了,停止運行。
2016-08-02
個人感覺,因為n=4,開始else遞歸,賦值之后a=a b=c c=b 然后n==1的時候a-->c的時候就輸出a-->b了 然后return,函數結束
2016-08-02
n=4時直接運行else else else 三次后n=1,這時候形參a,c,b對應實參a,b,c 所以輸出a-->b一次后 returne none 結束了。