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
答案
思路:
- 防御性:n 小于 2 直接返回
- 声明模防止溢出:
MOD = 1000000007
(这个数字是 10 位的最小质数) - 声明 F(0):n1 = 0, F(1):n2 = 1, F(n):sum;
- 计算公式
for(let i = 0; i < n; i++){
sum = (n1 + n2) % MOD;
n1 = n2;
n2 = sum;
} - 返回 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]
};