跳至主要內容

斐波那契数列

微信公众号:储凡2023/3/24大约 2 分钟

斐波那契数列

题目链接

题目描述

大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。 斐波那契数列是一个满足:

  • x = 1,2时 fib(x) = 1
  • x > 2 时 fib(x) = fib(x−1) + fib(x−2)

的数列 数据范围: 1≤n≤40 要求:空间复杂度O(1),时间复杂度O(n) ,本题也有时间复杂度O(logn) 的解法

刷题思路

方案一:递归

方案二:动态规划、循环迭代

代码实现

/**
 * 斐波那契数列,递归调用
 * 难度:入门
 */
function fibonacciOne(n) {
  return n < 2 ? n : fibonacciOne(n - 1) + fibonacciOne(n - 2)
}

/**
 * 斐波那契数列,迭代
 * 难度:入门
 */
function fibonacciTwo(n) {
  // 数列初始化
  let firstValue = 0
  let secondValue = 1

  let result = 1
  for (let index = 3; index <= n; index++) {
    result = firstValue + secondValue
    // 前面两列重新赋值
    firstValue = secondValue
    secondValue = result
  }
  return result
}

console.log(fibonacciOne(4))
console.log(fibonacciTwo(4))

一些建议

  • 熟记斐波那契数列特性

更新日志

2024/7/29 15:43
查看所有更新日志
  • 5a2b2-feat: 移除markdown-cli模块,采用prettier校验文档格式
  • c0f2d-refactor: 升级vuepress相关版本,优化项目结构 (#137)
  • 06596-feat: 算法相关文档新增固定链接,优化导入代码配置
  • 9b9e4-feat: 算法相关文档更新,删除讨论链接 (#88)
  • b0275-feat(markdownlint-cli): 添加markdown文档校验,支持lint脚本自动格式化文档
  • 5f1e1-feat: 导航栏、侧边栏内容修改,新增目录对应的文档
  • 02ab1-style: 文档目录调整,修改mdEnhance配置
  • 8de1a-feat: 剑指算法文档更新,修改目录结构
  • 74e84-docs(algorithm): 新增一些文档