题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n(n<=39),请你输出斐波那契数列的第n项(从0开始,第0项为0)。
注:斐波那契数列的定义如下:
代码如下:
解法一:
function Fibonacci(n){
if(n<=0) {
return 0;
}
if(n===1) {
return 1;
}
return Fibonacci(n-1)+Fibonacci(n-2);
}
// 测试
console.log(Fibonacci(4)); // 输出为3
解法二:
// 解法二
function Fibonacci(n){
if(n<=0) {
return 0;
}
if(n===1) {
return 1;
}
let f0 = 0, f1 = 1;
let f2 = 0;
for(let i=2;i<=n;i++){
f2 = f0 + f1;
f0 = f1;
f1 = f2;
}
return f2;
}
// 测试
console.log(Fibonacci(4)); // 输出为3
解法比较:
第一种基于递归的解法虽然直观但时间效率很低,在实际软件开发中不会用这种方法。
第二种方法把递归用循环实现,极大地提高了时间效率。
拓展练习:
青蛙跳台阶问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解答:这实际上就是斐波那契数列,代码如下所示:
function jumpFloor(number){
if(number<=0) {
return 0;
}
if(number===1) {
return 1;
}
if(number===2) {
return 2;
}
let f1 = 1, f2 = 2;
let f3 = 0;
for(let i=3;i<=number;i++){
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
return f3;
}
// 测试
console.log(jumpFloor(3)); // 输出为3
END