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

交替级数求和函数疑问:stop参数含义与while循环实现方法

交替级数求和函数实现指导

先搞懂stop的作用

stop是停止累加的阈值:我们要逐项计算级数的每一项,只要当前项的绝对值大于stop,就把它加到总和里;当某一项的绝对值≤stop时,就停止循环,不再继续往后加了。

  • 比如stop=0.249时,第4项是1/4=0.25,绝对值大于0.249,所以要加;第5项是1/5=0.2,小于0.249,停止,所以取前4项求和。
  • 比如stop=0.199时,第5项1/5=0.2大于0.199,要加;第6项1/6≈0.166小于0.199,停止,所以取前5项求和。

你的代码问题在哪

  1. 错误使用递归调用alternating_while(n-1),完全偏离了题目要求的while循环实现逻辑,还会导致错误或无限递归。
  2. return total放在while循环内部,第一次循环就直接返回,根本没完成累加过程。
  3. 没有正确更新每一项的值和项数n的计数。

正确的实现代码

def alternating_while(stop):
    total = 0.0
    n = 1
    while True:
        # 计算当前项的值
        term = (-1) ** (n + 1) / n
        # 判断当前项是否符合保留条件,不符合就退出循环
        if abs(term) <= stop:
            break
        # 符合条件就累加到总和
        total += term
        # 更新项数,准备计算下一项
        n += 1
    return total

代码逻辑解释

  • 初始化总和total为浮点数0.0,避免整数除法导致的精度问题;项数n从1开始计数。
  • 用while True构建无限循环,直到遇到退出条件才终止。
  • 每次循环先计算当前项term,通过(-1)**(n+1)控制正负号,除以n得到项的具体值。
  • 用abs(term)判断是否满足保留条件:如果当前项的绝对值≤stop,说明这一项及后续所有项的绝对值都会更小,直接退出循环。
  • 若当前项符合要求,就把它加到总和里,然后将n自增1,准备计算下一项。
  • 循环结束后返回最终累加的总和。

测试验证

  • 调用alternating_while(0.249),会计算前4项:1 - 1/2 + 1/3 - 1/4 = 0.583333...
  • 调用alternating_while(0.199),会计算前5项:1 - 1/2 + 1/3 - 1/4 + 1/5 = 0.783333...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:31:03