Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

用 JavaScript 寫費氏數列

之前曾經在 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 年之後,終於跨過當年的那道檻。雖然對其他投身在業界的工程師來說,這可能是再簡單不過的,但是遞迴函式對於不熟悉這種邏輯的初學者來說,真的會是一道難以跨過的鴻溝。

Eric Chuang
Eric Chuang

正職是廣告行銷人員,因為 Google Tag Manager 的關係開始踏入網站製作的領域,進一步把 WordPress 當成 PHP + HTML + CSS + JavaScript 的學習教材。此外,因為工作的關係,曾經用 Automattic 的 Underscores (_s) 替客戶與公司官網進行全客製化佈景主題開發。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料