递归函数不返回值

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


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)


小唯快跑啊
浏览 172回答 2
2回答

明月笑刀无情

这个答案并没有数转换为字符串(或其他可迭代),然后回数字。def sum_of_digits (n: int, sum = 0) -> int:&nbsp; if n < 10:&nbsp; &nbsp; return n + sum&nbsp; else:&nbsp; &nbsp; return sum_of_digits (n // 10, sum + n % 10)print(sum_of_digits(1))&nbsp; &nbsp; &nbsp; # 1print(sum_of_digits(12))&nbsp; &nbsp; &nbsp;# 3print(sum_of_digits(123))&nbsp; &nbsp; # 6print(sum_of_digits(1234))&nbsp; &nbsp;# 10print(sum_of_digits(12345))&nbsp; # 15

12345678_0001

另一个没有数据类型转换的简单解决方案:def sum_of_digits(integer):&nbsp; &nbsp; if integer == 0:&nbsp; &nbsp; &nbsp; &nbsp; return 0&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; return integer % 10 + sum_of_digits(integer // 10)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python