此代码应该找到整数的数字之和。当我运行它时,计算机只是处理了一段时间,然后什么也没有发生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 resultsum_of_digits(123456)
2 回答
明月笑刀无情
TA贡献1828条经验 获得超4个赞
这个答案并没有数转换为字符串(或其他可迭代),然后回数字。
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
12345678_0001
TA贡献1802条经验 获得超5个赞
另一个没有数据类型转换的简单解决方案:
def sum_of_digits(integer):
if integer == 0:
return 0
else:
return integer % 10 + sum_of_digits(integer // 10)
添加回答
举报
0/150
提交
取消