该代码应用于查找整数的总和。当我运行它时,计算机只是处理了一段时间,然后什么也没有发生

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

09-26 02:17