斐波那契遞迴

2021-09-14 05:51:13 字數 1336 閱讀 7617

const fib1 = n => )`)

if (n === 0) else if (n === 1) else

}console.log(fib1(5))

// 函式呼叫順序

// fib1(5) fib1(4) fib1(3) fib1(2) fib1(1) fib1(0) fib1(1) fib1(2) fib1(1) fib1(0) fib1(3) fib1(2) fib1(1) fib1(0) fib1(1)

可以發現整個過程是二叉樹先序遍歷的過程。此外,整個過程中多次呼叫了fib1(3)fib1(2)fib1(5),產生大量冗餘的呼叫。無路什麼資料結構最後都是隊棧嗎?

一行寫出斐波那契數列

const fib1 = n => (n <= 1) ? n : (fib1(n - 1) + fib1(n - 2))
將找到斐波那契數列的第n項問題轉化為在乙個初始項為t0和t1的加法序列(序列中,每一項都是前兩項的和)中找到第n項的問題。

求以3和7為初始項的第乙個序列中的t6(71)可以轉化為求以7和10為初始項的第二個序列中的t5(71)

const fib2 = n => 

const additivesequence = (n, t0, t1) => ,$,$)`)

if (n === 0) else if (n === 1) else

}console.log(fib2(5))

// additivesequence(5,0,1)

// additivesequence(4,1,1)

// additivesequence(3,1,2)

// additivesequence(2,2,3)

// additivesequence(1,3,5)

求以3和7為初始項的第乙個序列中的t6(71)可以轉化為求以10和17為初始項的第二個序列中的t4(71)

const fib3 = n => 

const additivesequence = (n, t0, t1) => ,$,$)`)

if (n === 0) else if (n === 1) else

}console.log(fib3(5))

// additivesequence(5,0,1)

// additivesequence(3,1,2)

// additivesequence(1,3,5)

遞迴 斐波那契

題 若一頭小母牛,從出生起第四個年頭開始每年生一頭母牛,按此規律,第n年有多少頭母牛?具體分析 1 分析題目 從出生起第四個年頭開始每年生一頭母牛 時間 年 未成熟母牛 頭 成熟母牛 頭 母牛總數 頭 1 1 0 1 2 1 0 1 3 1 0 1 4 0 1 1 5 1 1 2 6 2 1 3 7...

遞迴優化 斐波那契

f n f n 1 f n 2 1,2,3,5,8.自頂向下使用的遞迴層次比較多,在n取值較大的情況下,效率很低 時間維度 所以可以使用陣列來替換多重遞迴呼叫,即以空間來置換時間 intersting include include include include include include d...

遞迴 斐波那契 兔子

斐波那契數列的排列是 0,1,1,2,3,5,8,13,21,34,55,89,144 依次類推下去。觀察後發現,它後乙個數等於前面兩個數的和。在這個數列中的數字,就被稱為斐波那契數。遞迴思想 乙個數等於前兩個數的和。package com.autumn 斐波那契數列的排列 0,1,1,2,3,5,...