关于 尾递归

124 阅读1分钟
function Fib1(n) {
  if(n <= 2) {
      return 1
  }
  return Fib1(n - 1) + Fib1(n - 2)
}


function Fib2(n, n1, n2) {
    if(n == 1) {
        return n2
    }
    return Fib2(n - 1, n2, n1 + n2)
}
// 函数理解:
// 1 1 2 3 5
// 传入 4 理应结果是 5
// 第一次计算 Fib(3, 1, 2) 计算了 1 + 1 的值 求的就是 第2位的值
// 第二次计算 Fib(2, 2, 3) 计算了 1 + 2 的值 求的就是 第3位的值
// 第三次计算 Fib(1, 3, 5) 计算了 2 + 3 的值 求的就是 第4位的值
// n == 1 直接返回 n2 的值,就是 5