爬楼梯问题<递归方法和 非递归方法>

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

  // 递归方法
  let data1 = new Date();
  function fib(n) {
      if (n <4) return n
      return fib(n - 1) + fib(n - 2)
  }
  let arr = []
  for (let index = 1; index < 10; index++) {
      arr.push(fib(index)) // 34
  }
  let data2 = new Date();
  console.log(arr,data2-data1);
// 非递归方法
   let data3 = new Date();
  function fib1(n) {
      if (n<4) {
          return n
      }
      let a = 1
      let b = 2
      let c = 3
      for (let i = 3; i < n; i++) {
          a = b
          b = c
          c = a+b
      }
      return c
  }
  let arr1 = []
  for (let index = 1; index < 10; index++) {
      arr1.push(fib1(index)) // 34
  }
  let data4 = new Date();
  console.log(arr1,data4-data3);

 

posted @ 2022-04-19 14:03  这个攻城狮不太冷静  阅读(76)  评论(0编辑  收藏  举报