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

如何用Python递归计算几何级数a + ar + ar² + ... + arⁿ⁻¹的和?

递归计算几何级数和的修正方案

首先明确目标:我们要计算的是a + ar + ar² + ... + arⁿ⁻¹的和,共n项。

原代码的核心问题

  • 边界条件错误:
    • n=0时,没有任何项,和应为0,而非返回a;
    • n=1时,只有首项a,和应为a,而非a+r;
  • 递归逻辑错误:原代码的a + recursiveSum(a,r,n-1)*r不符合级数的递归关系。正确推导:设S(n)为n项的和,S(n-1)是前n-1项的和(即a + ar + ... + ar^(n-2)),那么rS(n-1) = ar + ar² + ... + ar^(n-1),因此S(n) = a + rS(n-1)。

修正后的代码

def recursiveSum(a, r, n):
    if n == 0:
        return 0  # 0项的和为0
    elif n == 1:
        return a  # 1项的和就是首项a
    else:
        return a + r * recursiveSum(a, r, n-1)

验证示例

比如a=2,r=3,n=3:

  • 正确结果:2 + 23 + 23² = 2 + 6 + 18 = 26
  • 递归计算过程:
    recursiveSum(2,3,3) = 2 + 3*recursiveSum(2,3,2)
    recursiveSum(2,3,2) = 2 + 3*recursiveSum(2,3,1) = 2 + 3*2 = 8
    最终结果:2 + 3*8 = 26,符合预期。

你也可以简化边界条件,只保留n=0的判断:

def recursiveSum(a, r, n):
    if n == 0:
        return 0
    return a + r * recursiveSum(a, r, n-1)

当n=1时,会返回a + r*recursiveSum(a,r,0) = a + 0 = a,同样正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:12:41