裴波那契

// 以下两个版本均为低效实现方法
// 命令式用法
const fib = function(n) {
  if (n <= 1) return n;
  return fib(n-1) + fib(n-2);
}

// es6
const fibES6 = n => n < 2 ? n : fibES6(n-1) + fibES6(n-2)

// 使用尾递归实现
function fibTail(n, a = 1, b = 1) {
    if (n === 0) return a

    return fibTail(n - 1, b, a + b)
}

Last updated