思考了一周,結果還是看答案才寫出來的。
思考一周,自己親自玩了瘋狂漢諾塔的游戲,玩到了10層(用時半個小時才做完,正確步驟是1023步,我用了1110步,錯了87步)。對這個游戲有了實際操作理解后,才進行編程。
當時覺得難點如下:
1、如何在移動的時候,還打印出正確的步驟。
2、開始覺得n是偶數和奇數,第一步移到的塔不一樣。(偶數是b塔,奇數是c塔)。覺得是否要添加一個判斷語句。
3、遞歸函數里,要寫幾個特例,開始我寫到了n==1,n==2,n==3的三種情況。覺得應該分不了這么多。
4、遞歸函數里,要遞歸幾次(就是要用到move幾次?)。我是只用了一次,就是最后一個move(n-1,b,a,c)寫對了。所以顯示出來的步數少了,比如n=4時,才11步。
總結如下:
1、要想寫出編程,必須親自玩漢諾塔的游戲,至少玩到7層以上!
2、要自己嘗試去寫,不用直接看答案,思考過程比答案更痛苦,也更有趣!
3、關鍵之處在于遞歸里的第一個move(n-1,a,c,b)。意思是把?(n-1) 個圓盤移動到 b。這個move的動作之后需要最下面一個盤移動a-c,就是print a-->c。
4、之后再把b上面的盤移動回到c,就是move(n-1,b,a,c)
2015-06-11
作為編程,直接理解提示,照寫代碼即可。