为了账号安全,请及时绑定邮箱和手机立即绑定

递归函数不返回值

递归函数不返回值

小唯快跑啊 2021-08-11 21:39:43
此代码应该找到整数的数字之和。当我运行它时,计算机只是处理了一段时间,然后什么也没有发生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


查看完整回答
反对 回复 2021-08-11
?
12345678_0001

TA贡献1802条经验 获得超5个赞

另一个没有数据类型转换的简单解决方案:


def sum_of_digits(integer):

    if integer == 0:

        return 0

    else:

        return integer % 10 + sum_of_digits(integer // 10)


查看完整回答
反对 回复 2021-08-11
  • 2 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信