在 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
否则会加一个
新手尝试在 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
否则会加一个