這個題目就是畫一個表格,把裡面的數字填對的就好了。我在實驗課的時候告訴學生說,一般人遇到這個題目就是照著程式的運行的順序依次填表,只要細心點,就不會答錯。以下這個表格為例,就是一列一列的把 i, j, sum 算出來,最後那格的 sum 就是我們要的答案。
但換個角度想,也可以這樣做,先把所有的 i 寫下來,其次再寫 j,因為他們都有估定的規律,比較不會填錯。當所有的 i, j 都齊了後,整群數字用「看」的(比方說 1, 2, 3 自然就想到 6),就可以把最後那個的 sum 算出來。
講解完這題,嘈雜的學生們靜默了幾秒後,現場居然有人拍手了。
旁邊一位大學部助教說:「我從來沒想過這種解法,看到這題我是用第一種方法解的。」這位大學部的助教今年要去 Google 實習。其實在座這些矇矇懂懂的學生們,過了不久也會熟稔這些題目,也許不是用這樣的方法解,但遲早會具備「閱讀程式碼」的本領。對於認真的學生來說,一次考試結束,能知道自己哪個部分沒有學好。隨著課程進行,作業會更難,學生會花更多時間練習「實作」,參與助教課,把著你問問題,然後在期末的時候,做出令你驚訝的專題。