iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
自我挑戰組

前端開發 | 學習歷程系列 第 24

DAY - 24 遞迴和費波那契數列

  • 分享至 

  • xImage
  •  

大家好,我是一名菜鳥工程師,Chris,今天來到第 24 天,JS 的遞迴和費波那契數列

什麼是遞迴 (Recursive)?

一個程序或函數,它會呼叫自己本身,重複將問題分解成很多個小問題,並採用相同的方法,一個一個去解決,類似樹狀結構,一層一層堆疊起來

https://ithelp.ithome.com.tw/upload/images/20231009/20162454fhxN8A06vI.png

以上圖片取自網路

遞迴以程式碼來說,會像下面這樣運作

function recursive{
  // 其他程式碼
  recursive()
}

recursive()

舉一個累加的例子
假設有一個數字A,我們要求1+2+3+4+5的總和,然而這邊就能運用遞迴方法來解答

function recursive(num) {
  if (num == 1) {
    return 1;
  } else {
    const result = recursive(num - 1) + num;
    return result;
  }
}

console.log(recursive(5)); // 印出 15

費波那契數

費波那契數是以遞迴的方式來定義

  • F0 = 0 (預設值)
  • F1 = 1 (預設值)
  • Fn = Fn-1+Fn-2 (適用所有大於 1 的整數)

https://ithelp.ithome.com.tw/upload/images/20231009/20162454bpllNNmvLx.png

以上圖片取自網路

在費波那契數中有一個經典的例子,這邊以乘法為例

function factorial(num) {
  if (num <= 1) {
    return 1;
  } else {
    return num * factorial(num - 1);
  }
}

console.log(factorial(3)); // 印出 6

1 由於factorial函數接受參數num
2 接著,要執行檢查的動作

  • 如果num小於或等於1
    • 它的函數會傳回 1
  • 如果num大於1
    • 它會將numnum- 1 相乘
    • 再來,它會呼叫factorial函數本身,並將num- 1 作為參數傳遞

3 而這個遞迴會一直持續下去,直到num減少到1

4 最後,遞迴會停止,然後將所有的乘法運算結果相乘,直到計算出最終的結果

5 計算過程如下:

factorial(3) 呼叫 factorial(2)
factorial(2) 呼叫 factorial(1)
factorial(1) 回傳 1

factorial(2)時,計算為2 * 1 = 2
factorial(3)時,最終結果為 3 * 2 = 6

★總結 : 以上就是關於遞迴和費波那契數列的說明

今天就介紹到這邊,那我們明天見囉~~

明天預計內容:JS 的 AJAX!!!


上一篇
DAY 23 - Closure 閉包
下一篇
DAY - 25 AJAX 網路連線
系列文
前端開發 | 學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言