【发布时间】:2015-11-13 23:55:19
【问题描述】:
我必须编写一个递归函数来计算数字的总和,这是我尝试过的代码:
def sum_digit(n):
sum=0
a = n % 10
n //= 10
sum += a
while n > 0 :
sum = sum + sum_digit(n)
return sum
print(sum_digit(67154))
我不知道为什么我没有得到 23 作为答案...我的程序没有结束
例如 23 数字(如果我错了请纠正我,我是 python 的新手),3 求和,n 变为 2,因为它 > 0 那么它应该去 while,所以现在它应该计算 sum digit(2),a 变成 2,2 变成 sum,n 变成 0,sum digit(2) 返回 2,然后它与 3 相加,我必须得到 5。 感谢您的帮助。
【问题讨论】:
-
while n > 0你永远不会在循环中更改n。似乎您在这里混合了迭代和递归解决方案。 -
尽管您将
n更改为n //= 10,但这只影响该函数中的n。您需要了解作用域和递归的工作原理才能理解这一点,但基本上修改n不会影响调用sum_digit的函数。 -
Tl;dr ... 将
while更改为if并且不要使用sum作为变量,因为它会掩盖内置函数。
标签: python