理解递归斐波那契数列运算

function fs(n){
   if(n ===1 || n ===2){
      return 1;
   }
   return fs(n - 1) + fs(n - 2)
}

console.log(fs(6)) //输出结果为8

递归函数是一直执行到符合设定的条件时才会停止,这里设定了当n等于1或2的时候就会返回一个1,函数是先计算完前面的值才会计算后面的值。

①:fs(6) = fs(5)+fs(4), 后面的fs(4)先不执行,先执行前面的fs(5)

②:fs(5) = fs(4)+fs(3), 后面的fs(3)先不执行,先执行前面的fs(4)

③:fs(4)= fs(3)+fs(2), 后面的fs(2)先不执行,先执行前面的fs(3)

④:fs(3) = fs(2)+fs(1), 后面的fs(1)先不执行,先执行前面的fs(2)

函数fs(2) 运行时符合判断语句 , 返回 ‘1’。
到此前面的fs函数已经计算完了,开始计算后面的fs函数

执行序号④后面的fs(1)函数,符合判断语句,返回 ‘1
接着执行序号③后面的fs(2)函数,符合判断语句,返回 ‘1

执行序号②后面的fs(3)函数,不符合判断语句,继续向下执行

⑤:fs(3) = fs(2) + fs(1), 后面的fs(1)先不执行,先执行前面的fs(2)
fs(2)函数符合判断语句条件,返回 ‘1

执行序号⑤后面的fs(1),符合判断条件,返回 ’1
接着执行序号①后面的fs(4)函数

⑥:fs(4) = fs(3) + fs(2) 同上
⑦:fs(3) = fs(2) + fs(1)

运行fs(2) 符合判断语句,返回 ’1
执行序号⑦后面的fs(1)函数,符合条件,返回 ‘1
最后是序号⑥后面的fs(2)函数,符合条件,返回 ‘1’。整个函数运行完毕

把所有返回的1加起来就等于输出结果8了

fs(6) = fs(5) + fs(4)
fs(5) = fs(4) + fs(3)
fs(4) = fs(3) + fs(2)
fs(3) = fs(2) + fs(1)
fs(2) return 1;
fs(1) return 1;
fs(2) return 1;

fs(3) = fs(2) + fs(1)
fs(2) return 1
fs(1) return 1

fs(4) = fs(3) + fs(2)
fs(3) = fs(2) + fs(1)
fs(2) return 1
fs(1) return 1
fs(2) return 1
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值