斐波那契数列 1=>[1] 2=>[1,2] 3=>[1,1,2] 4=>[1,1,2,3]

// function Fei (n) {
//   let arr = [];
//   if (n <= 2) {
//     return 1
//   } else {
//     return Fei(n - 1) + Fei(n - 2)
//   }
// }
// function arrFei (n) {
//   let array = [];
//   for (let i = 1; i <= n; i++) {
//     array.push(Fei(i))
//   }
//   return array;
// }

// console.log(arrFei(9))

直接用递归怎么写,感觉有点费事

阅读 2.4k
2 个回答

没怎么简化,加了性能优化

fibArr = ((fib, m = { 1:[1] }) => function fibArr (n) {
  return m[n] || (m[n] = fibArr(n - 1).concat(fib(n)))
})(function fib (n) { return n <= 2 ? 1 : fib(n-1) + fib(n-2)})

image.png

'use strict'
function Fib(n, n1, n2){ 
    if(n == 0){
        return n1
     } 
     return Fib(n - 1, n2, n1 + n2) } 
// ES6的尾调用优化只在严格模式下开启,正常模式是无效的。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题