徹底暈菜了
寫代碼時怎么邏輯的???這個題我看明白了,但是不懂代碼是什么意思?。?! ? ?move(n-1, a, c, b) ? ?print a, '-->', c ? ?move(n-1, b, a, c) 這3行怎么解釋的?????
寫代碼時怎么邏輯的???這個題我看明白了,但是不懂代碼是什么意思?。?! ? ?move(n-1, a, c, b) ? ?print a, '-->', c ? ?move(n-1, b, a, c) 這3行怎么解釋的?????
2016-03-30
舉報
2016-03-31
我只好把我以前的一個回答粘過來, 題主細細品味下,應該能明白:
漢諾塔的遞歸問題,特別容易被?參數名?給弄混淆,這個問題可以分為兩部分來說:
首先,這是一個遞歸問題,遞歸問題的思路都是一致的:
其次這是一個漢諾塔問題,漢諾塔的問題,就是在除了初始柱外,依次放入次大底盤,且依次從初始柱解放最大底盤,這個問題代入遞歸的話就需要以下思路:
最后說下,漢諾塔的遞歸思路中最易混淆的“參數名”,在此只做一次說明,在第5行調用
這次調用move函數時:執行到第6行:
打印的是:?
想明白這些,然后從只有三個盤子去套用函數,應該就能明白了,如果還不明白,也不是我打字能說明的了。
2016-04-13
2016-03-30
print語句雖然沒變,但是函數里面的參數順序變了。輸出的就是第一個參數-->第三個參數
如果n不為1,就要把a移到b,所以調用move(n-1,a,c,b),此中的c是上面的b,b是c。print a, '-->', c 得到的就是a-->b。