当前位置:网站首页>js求斐波那契数列

js求斐波那契数列

2022-06-12 17:58:00 走出自闭的鸟儿

斐波那契数列

第一个数为0,第二个数为1,之后每个数都是前两个数之和

// 递归O(2^n)
function fibonacci(n){
    
  if(n<=0) return 0
  if(n===1) return 1
  return fibonacci(n-1) + fibonacci(n-2)
}

请添加图片描述

优化

  • 不用递归、用循环
  • 记录中间结果
  • 时间复杂度为O(n)
// O(n)
function fibonacci(n){
    
  if(n<=0) return 0
  if(n===1) return 1

  let n1 = 1 // 记录n-1的结果
  let n2 = 0 // 记录n-2的结果
  let res = 0
  for(let i =2 ;i<=n;i++){
    
    res = n1+n2
    // 记录中间结果
    n2 = n1
    n1 = res
  }
  return res
}

动态规划

  • 用递归的思路分析问题,用循环来解决问题
原网站

版权声明
本文为[走出自闭的鸟儿]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_47234456/article/details/124936893