python - 计算 1 到 n 之和的递归函数?

标签 python recursion python-3.x sum

这是我得到的,但我不确定为什么它不起作用:

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

最佳答案

两件事:

  • 在计算nsum 时调用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/

相关文章:

python - 使用 SQLAlchemy 将表函数映射到模型

haskell - Haskell 中回溯的实现

python - 如何将值分配给列表中的 python 字典

python - 在 python 上使用 scapy 显示捕获并保存在 .pcap 中的数据包协议(protocol)

python递归实例变量共享数据

java - 使用递归的迷宫求解器

Python 函数返回无序列表对象

python - Scipy 作为对 travis-ci 的依赖并且没有名为 _csr 的模块

python - 使用 Python 将变量添加到现有的 Netcdf4 文件

Python/Pandas - 将两列与 NaN 值合并