我必须编写一个递归函数来计算从 1 到 n 的偶数之和。例如 n=input= 6
预期的 output would be: 2+4+6 = 12
def sum_of_even(n):
if not n % 2 == 0:
return n
else:
return n + sum_of_even(n-1)
print(sum_of_even(6))
这给出了输出 11,但我什至不知道我的概念是否正确
原文由 randomobject123 发布,翻译遵循 CC BY-SA 4.0 许可协议
对代码进行最少的修改:
您的代码有两个问题:
当数字为偶数时,您没有返回到目前为止计算的值。相反,您返回的是输入值 n。通过这样做,您只是简单地总结到之前的 n 值
value n + sum_of_even(n-1)
。因此,当您print(sum_of_even(6))
它返回6 + sum_of_even(6-1)
即 11。如果您print(sum_of_even(5))
它只会返回 5。由于上述停止条件不正确,您需要一个合适的停止条件。你想添加所有偶数直到零(而不是
-inf
),所以:编辑:或者,Stef 建议,当您找到第一个偶数时,您可以简单地移动 2 乘 2 而不是 1 乘 1 次: