在 Python 中使用递归模数

Using a modulus in recursion in Python

新手尝试在 Python 中使用递归函数添加 int 的数字。当我使用 print 语句进行调试时,我可以看到我的程序正在计算除倒数第二个数字之外的所有数字。例如,如果我传入数字(12345),程序将计算5,然后跳过4,然后计算剩余的数字。这发生在任意数量的数字上。我想知道为什么模数会隔离除倒数第二个数字之外的所有数字。 (结果在其他方面也不正确,但我想关注模数如何递归运行。)

密码是:

def sumDigits(x):
    if x <= 0:
        return 1
    else:
        temp = x % 10
        x = x / 10
        print ('x = ', x, 'temp = ', temp)
        return temp + sumDigits(x -1)

结果为:

>>> sumDigits(5678)
('x = ', 567, 'temp = ', 8)
('x = ', 56, 'temp = ', 6)
('x = ', 5, 'temp = ', 5)
('x = ', 0, 'temp = ', 4)
24
>>> sumDigits(3456789)
('x = ', 345678, 'temp = ', 9)
('x = ', 34567, 'temp = ', 7)
('x = ', 3456, 'temp = ', 6)
('x = ', 345, 'temp = ', 5)
('x = ', 34, 'temp = ', 4)
('x = ', 3, 'temp = ', 3)
('x = ', 0, 'temp = ', 2)
37
>>> 

非常感谢您提供任何信息。

12345,这里5第一次来。那么你实际上是通过 4-1, 3-1, 2-1, 1-1

使用

return temp + sumDigits(x)

而不是

return temp + sumDigits(x - 1)

你也应该在这里改变:

def sumDigits(x):
    if x <= 0:
        return 0

否则会加一个