Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
之前曾經在 Facebook 動態裡面提到,當初讓自己放棄學程式的絆腳石,就是費氏數列。雖然沒有人問,但是,「然後呢?你現在會了嗎?」我這麼問我自己。所以用了 JavaScript 重新嘗試了一次。說實話,其實我這次一開始還是沒有想出來該怎麼解決。
首先,先用手稿釐清邏輯(不怕丟臉,反正一開始真的沒頭緒,隨便亂畫一通)。
function fibo( a ){ if ( a == 0 ){ return 0; } else if ( a == 1 ) { return 1; } return fibo( a ) + fibo( a-1 ); }
第一次嘗試,不小心寫出了無限迴圈。
function fibo( a ){ if ( a == 1 || a == 2 ){ return 1; } if ( a == 0 ){ return 0; } return fibo( a-1 ) + fibo( a-2 ); }
第二次嘗試,雖然可以得出想要的結果,但是 a == 2 這個判斷好像是多餘的。
function fibo(a){ if ( a == 0 ) return 0; if ( a == 1 ) return 1; return fibo( a - 1 )+fibo( a - 2 ); }
時隔 12 年之後,終於跨過當年的那道檻。雖然對其他投身在業界的工程師來說,這可能是再簡單不過的,但是遞迴函式對於不熟悉這種邏輯的初學者來說,真的會是一道難以跨過的鴻溝。