javascript斐波那契数列

斐波那契数列是指形如: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.青蛙跳台阶
javascript斐波那契数列_第1张图片

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.变态跳台阶
javascript斐波那契数列_第2张图片
经过列举和数学归纳法证明 f(n)=2(n-1) (感兴趣的小伙伴拿可自己算一下哦)
所以可知

function jumpFloorII(number)
{
    return Math.pow(2,number-1)
}

你可能感兴趣的:(前端编程)