You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

第N项斐波那契数递归实现中else块运行逻辑请教

代码逻辑解释

这是带记忆化优化的递归版斐波那契数求解代码,哈希表的作用是存储已经计算过的项的结果,避免普通递归的重复计算问题。

else块运行逻辑

else块的触发前提是:你要计算的第n项斐波那契数还没有被存入哈希表,没有现成结果可以直接返回。
块内的逻辑分两步走:

  • 第一步:按照斐波那契数的定义,把第n项的计算拆解为「计算第n-1项的值」+「计算第n-2项的值」。两个子计算会复用同一个哈希表,走和当前调用完全相同的判断逻辑:如果子项已经在哈希表里就直接返回值,没在的话就继续进对应的else块拆解计算。
  • 第二步:把计算得到的第n项结果存入哈希表,后续所有调用需要用到第n项的结果时都可以直接读取不需要重复递归,最后返回当前计算出的第n项值。

实际运行示例

我们以调用getNthFib(4)为例,走一遍完整流程:

  1. 初始哈希表为{1: 0, 2: 1},n=4不在哈希表中,进入else块
  2. 先计算getNthFib(3, 哈希表):
    • n=3不在初始哈希表中,进入对应else块
    • 计算getNthFib(2, 哈希表):n=2在哈希表中,直接返回1
    • 计算getNthFib(1, 哈希表):n=1在哈希表中,直接返回0
    • 计算得到n=3的结果为1+0=1,存入哈希表,此时哈希表变为{1: 0, 2: 1, 3: 1},返回1
  3. 再计算getNthFib(2, 哈希表):n=2已经在哈希表中,直接返回1
  4. 计算得到n=4的结果为1+1=2,存入哈希表,返回2

内容的提问来源于stack exchange,提问作者dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:06:03