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

递归求和函数如何设置求和上限?Scala实现代码运行错误排查

问题原因排查

你的代码存在两个核心错误:

  • 终止条件设置错误:u/2 == 1仅能覆盖u=2、u=3的输入场景,输入小于2时会触发递归栈溢出,逻辑也不符合求和终止的要求
  • 单步项计算逻辑错误:你定义i = u/2 + 1,代入u + 1 - 2*i计算得到的结果恒为-1,和你需要的求和项逻辑完全不符
修正方案

递归求和的核心设计逻辑是:under(u)对应上限为u的求和结果,等于当前u对应的求和项值加上上限为u-1的求和结果under(u-1),输入为0时返回0作为终止条件。
符合你预期under(5) = 10的修正代码如下:

def under(u: Int): Int = {
  // 终止条件:u为0时求和结束
  if u == 0 then 0
  // 每一项值为u-1,累加前序求和结果
  else (u - 1) + under(u - 1)
}

如果你需要适配最初的求和公式,只需要修改else分支里的单步项计算逻辑即可,核心递归框架不需要调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:24:08