Skip to main content

10- I. 斐波那契数列

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

F(0) = 0,   F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.

示例 1:

输入:n = 2
输出:1

示例 2:

输入:n = 5
输出:5

答案

思路:

  1. 防御性:n 小于 2 直接返回
  2. 声明模防止溢出:MOD = 1000000007(这个数字是 10 位的最小质数)
  3. 声明 F(0):n1 = 0, F(1):n2 = 1, F(n):sum;
  4. 计算公式
    for(let i = 0; i < n; i++){
    sum = (n1 + n2) % MOD;
    n1 = n2;
    n2 = sum;
    }
  5. 返回 n1

递归

var fib = function(n) {
if (n < 2) {
return n;
}
const MOD = 1000000007;
let n1 = 0, n2 = 1, sum;
for(let i = 0; i < n; i++){
sum = (n1 + n2) % MOD;
n1 = n2;
n2 = sum;
}
return n1;
};

for 循环

var fib = function(n) {
var fibon=[0,1];
if(n>=2){
for(let i=2;i<=n;i++){
fibon[i]=(fibon[i-1]+fibon[i-2]) %(1e9+7);
}
}
return fibon[n]
};