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

Python递归实现加权平均值的代码正确性验证咨询

加权平均递归实现核验

现有代码逻辑验证

你编写的递归函数实际计算的数学表达式可以通过展开递归逻辑得到:
对于长度为n的输入列表[a₁, a₂, a₃, ..., aₙ],函数返回值的展开式为:

w = a₁/1 + a₂/2 + a₃/3 + ... + aₙ/n

你可以把这个结果和你需要实现的加权平均公式做对比:

  • 如果公式定义的就是「第i个元素除以i后求和」,那你的实现是正确的
  • 如果公式是常见的位置加权平均(第i个元素权重为i,分子为各元素乘权重之和,分母为权重之和),对应表达式为w = (1*a₁ + 2*a₂ + 3*a₃ + ... +n*aₙ) / (n*(n+1)/2),那么你的现有实现不符合要求。

符合位置加权平均要求的递归实现

如果需要实现上述常见位置加权平均,可以参考以下写法,其中分子求和用了递归实现,满足自定义递归函数的要求:

def recursive_weighted_sum(l, n):
    # 递归计算分子:1*a1 + 2*a2 + ... +n*an
    if n == 1:
        return l[0] * 1
    return l[n-1] * n + recursive_weighted_sum(l, n-1)

def wavg(l):
    n = len(l)
    if n == 0:
        return 0 # 空列表边界处理
    sum_weighted = recursive_weighted_sum(l, n)
    sum_weights = n * (n+1) / 2
    return sum_weighted / sum_weights

测试示例

拿列表[1,2,3]测试:

  • 你的现有代码返回结果:3/3 + 2/2 +1/1 = 1+1+1=3
  • 位置加权平均结果:(1*1 + 2*2 +3*3)/(3*4/2) = (1+4+9)/6 = 14/6 ≈2.333

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:24:00