我想要得到所有数字的总和 . 允许解决这个问题的唯一方法是递归函数 . 但是,总和不应该超过10.例如,如果给定n是38,它应该返回2.(3 8 = 11,1 1 = 2)
我做了以下代码 . 但是,它只返回11.我以许多不同的方式处理这个问题,例如嵌套的if和while循环,但我无法弄明白 . 有什么方法可以使用递归函数解决这个问题吗?
def digit_sum(n):
if n//10 <= 0:
return n%10
return digit_sum(n//10) + n%10
5 回答
您可以使用您的方法进行微小修改:
或者忽略递归要求:
甚至更短(感谢@thanasisp):
问题是这条线
因为如果
n//10
和最后一位数字的总和变为两位数,则没有人减少它 . 可能的解决方案是:试试这个:
您可以执行以下操作:
这是一个不会强制转换为str的递归解决方案:
一些测试:
输出: