兩個print怎么實現了打印所有步驟?
我知道這代碼的意思,先將n-1個移動到中轉柱上,再將第n個移動到目的柱上。
n-1個餅一直重復執行move直到為1才能return。return后回到剛剛停下的地方繼續執行下去。就這樣通過2個print得到了15個步驟。
可是怎么想也想不通為什么這兩個print就能打印出全部的步驟。
我484蠢- -
????????????????????????????????
我知道這代碼的意思,先將n-1個移動到中轉柱上,再將第n個移動到目的柱上。
n-1個餅一直重復執行move直到為1才能return。return后回到剛剛停下的地方繼續執行下去。就這樣通過2個print得到了15個步驟。
可是怎么想也想不通為什么這兩個print就能打印出全部的步驟。
我484蠢- -
????????????????????????????????
2015-11-01
舉報
2015-12-10
我覺得不對,你返回第一次執行的話,return,直接函數就結束了,只print一個a--b
2015-12-07
最笨也是最簡單的方法:自己寫出每一步執行步驟和結果就可以了。
例如move(2, a, b, c)運行的時候:
? ? 第一層if不滿足,執行else,move(1, a, c, b),進入第二層
? ? 第二層if滿足,打印a-->b(注意參數不是最開始的abc,而是第一層里面的acb了),返回
? ??第一層繼續執行,打印a-->c
? ??第一層繼續執行,執行move(1, b, a, c),進入第二層
? ??第二層if滿足,打印b-->c(注意參數又變成了第一層的bac),返回
用笨辦法做過一遍以后,就發現print沒問題,只不過是每次遞歸調用時參數的位置變了而已。笨辦法雖然麻煩,但其實是可以加深對知識理解深度的。這套教程寫得不錯,但練習設置得都太簡單,學員缺少練手的機會,容易眼高手低,要知道光靠“看”是學不會“寫”程序的。