python - 递归函数不返回值

标签 python python-3.x recursion

这段代码应该找到一个整数的数字之和。当我运行它时,计算机只处理一段时间,然后什么也没有发生

def sum_of_digits(integer):
    numlist = list(str(integer))
    if len(numlist) == 0:
        result = 0
    elif len(numlist) == 1:
        result = numlist[0]
    else:
        midPoint = len(numlist) // 2
        result = sum_of_digits(numlist[:midPoint]) + 
        sum_of_digits(numlist[midPoint:])
    print(result)
    return result


sum_of_digits(123456)

最佳答案

此答案不会将数字转换为字符串(或其他可迭代对象),然后再转换回数字。

def sum_of_digits (n: int, sum = 0) -> int:
  if n < 10:
    return n + sum
  else:
    return sum_of_digits (n // 10, sum + n % 10)

print(sum_of_digits(1))      # 1
print(sum_of_digits(12))     # 3
print(sum_of_digits(123))    # 6
print(sum_of_digits(1234))   # 10
print(sum_of_digits(12345))  # 15

关于python - 递归函数不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53217024/

相关文章:

python - 在不到一秒的时间内获取巨大矩阵的范数 : NUMPY, PYTHON

python - 递归转储一个对象

python - 在python中调整图像大小算法

在字典中设置值的pythonic方式

php - PHP中数字的递归和阶乘

python - 如何解决Django应用程序名称与外部库冲突

python - Keras:从 flow_from_directory 获取图像和标签数组

python - 如何在 Windows 10 上运行的 PyCharm 上使用 PyPy(适用于 python 3.6)?

c++ - 我的析构函数似乎没有命中树中的每个节点,因为我有内存泄漏,我在这里错过了什么?

Java 递归参数值