力扣刷题日记-剑指 Offer 10- I. 斐波那契数列

87 阅读1分钟

服自己了,看题没看清,原本一次性可以通过的题目,硬是做了三次, 原来忘记模1000000007

  • 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:

F(0) = 0,   F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

来源:力扣(LeetCode) 链接:leetcode.cn/problems/fe… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

/**
 * @param {number} n
 * @return {number}
 */
var fib = function (n) {
    let map = new Map()
    const recursionFun = (n) => {
        if (n == 0) return 0
        if (n == 1) return 1
        if (map.get(n)) {
            return map.get(n)
        } else {
            let result = (recursionFun(n - 1) + recursionFun(n - 2)) % 1000000007
            map.set(n, result)
            return result
        }
    }
    return recursionFun(n) 
};