斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。这个数列从第3项开始,每一项都等于前两项之和。现只给数列的下标,返回对应下标数列的值:
示例
1, 1, 2, 3, 5, 8, 13, 21... // 菲波那切数列
0, 1, 2, 3, 4, 5, 6, 7... // 数列索引
function f1(i){
//
}
f1(5) // 输出8
解题思路: 上面介绍数列从第3项开始,每一项都等于前两项之和。依据数列的规律,可以的有两种方法实现
方法1
// 递归方法(不推荐,性能消耗大)
function f1(i){
if(i === 0 || i === 1){
return 1;
}else {
return f1(i - 2) + f1(i - 1);
}
}
方法2
// 推荐
function f1(i) {
let pre = 0;
let cur = 1;
if(i === 0) {
return cur;
}else if(i) {
for(let n = 0; n < i; n++){
const mid = cur; // 记录cur,因为cur是下一次循坏的pre
cur = cur + pre;
pre = mid;
}
return cur;
}
}