这是我得到的,但我不确定为什么它不起作用:
def sum(n):
if n > 0:
print(n)
return sum(n) + sum(n-1)
else:
print("done doodly")
number = int(input(": "))
sum(number)
例如,如果用户输入 5
,我希望程序计算 5+4+3+2+1 的总和。我做错了什么?
对于此问题的非递归 版本,请参阅 Sum of the integers from 1 to n
最佳答案
两件事:
- 在计算
n
的sum
时调用sum(n)
对您没有多大好处,因为您将无限期递归。所以return sum(n)+sum(n-1)
这行是不正确的;它需要是n
加上n - 1
其他值的总和。这也是有道理的,因为这就是您要计算的内容。 - 您需要为基本情况和递归情况返回一个值。
因此,您可以将代码简化为:
def sum(n):
if n == 0:
return 0
return n + sum(n - 1)
关于python - 计算 1 到 n 之和的递归函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19966290/