递归函数来计算总和?

kia*_*asy 5 python recursion sum python-3.x

这就是我所拥有的,但我不确定为什么它不起作用

def sum(n):
    if (n>0):
        print (n)
        return sum(n)+sum(n-1)
    else:
        print("done doodly")

number = int(input(":  "))
sum(number)
Run Code Online (Sandbox Code Playgroud)

例如如果使用输入5,我想编程来计算5+4+3+2+1的总和。我究竟做错了什么 ?

Sim*_*ser 6

两件事情:

  • sum(n)在计算时调用sumforn不会对你有多大好处,因为你会无限期地递归。所以这条线return sum(n)+sum(n-1)是不正确的;它需要n加上n - 1其他值的总和。这也是有道理的,因为这就是您想要计算的。
  • 您需要为基本情况和递归情况返回一个值。

因此,您可以将代码简化为:

def sum(n):
    if n == 0:
        return 0
    return n + sum(n - 1)
Run Code Online (Sandbox Code Playgroud)


ins*_*get 2

你忘了return什么时候n==0(在你的else

>>> def Sum(n):
...   if not n:
...     return 0
...   else:
...     return n + Sum(n-1)
... 
>>> Sum(5)
15
Run Code Online (Sandbox Code Playgroud)