斐波那契数列是指形如:1,1,2,3,5…除了第一项和第二项,每一项都等于前两项之和
1.递归方法
不好的地方在于输入的n大于一定数时,会算法复杂度过大,陷入死循环
function Fibonacci (n) {
if (n == 1 || n == 2) {
return 1
}
return Fibonacci(n-1) + Fibonacci(n-2)
}
2.迭代
function Fibonacci (n) {
let num1 = 1,num2 = 1,sum
if (n === 1 || n === 2) {
return 1
}
for (let i = 2; i < n; i++) {
sum = num1 + num2
num1 = num2
num2 = sum
}
return sum
}
3.输出斐波那契
function Fibonacci (n) {
let arr = []
for (let i = 0; i < n; i++) {
if(i == 0 || i == 1) {
arr.push(1)
} else {
arr.push(arr[i-1]+arr[i-2])
}
}
return arr
} Fibonacci(3) // [1,1,2]
4.青蛙跳台阶
function jumpFloor(number)
{
let num1 = 1,num2 = 2,sum
if (number == 1) {
return 1
} else if (number == 2) {
return 2
} else {
for(let i = 3; i <= number; i++){
sum = num1 + num2
num1 = num2
num2 = sum
}
return sum
}
}
说明:
一阶台阶只有:1 ;
二阶有:[1,1];[2] 两种;
三阶有:[1,1,1]; [1,2]; [2,1]三种;
四阶有:[1,1,1,1];[1, 2, 1];[1, 1, 2];[2, 2];[2, 1, 1]五种
所以从第三阶开始可以看成是前两个种数相加得来的
5.变态跳台阶
经过列举和数学归纳法证明 f(n)=2(n-1) (感兴趣的小伙伴拿可自己算一下哦)
所以可知
function jumpFloorII(number)
{
return Math.pow(2,number-1)
}