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

如何不使用递归与while循环实现指定JS递归函数的同等功能?

核心思路

先拆解原递归函数的计算逻辑:

  • 递归过程本质是累加1/(n*(n-1))(n从3到输入参数i),再加上初始参数val和边界值1/2
  • 利用裂项公式1/(n*(n-1)) = 1/(n-1) - 1/n,累加后所有中间项会完全抵消,最终可推导出通用计算式,完全不需要循环或者递归就能实现

最终实现代码

function compute(i, val = 0) {
  if (i < 2) throw new Error('wrong input');
  return val + 1 - 1 / i;
}

效果验证

随便代入参数测试即可确认和原递归函数结果完全一致:

  • 输入i=2, val=0:返回0 + 1 - 1/2 = 0.5,和原递归结果一致
  • 输入i=5, val=2:返回2 + 1 - 1/5 = 2.8,对应原递归计算结果为2 + 1/2 + 1/(3*2) + 1/(4*3) + 1/(5*4) = 2.8,完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:09:02