对于我的递归分配,我们唯一可以使用的内置函数是 len() 和 'print()'。因此,甚至不允许使用int()
。我应该创建的函数应该分解一个数字并打印出数字中的每个数字。
所以,
>>breakApart(757890)
7
5
7
8
9
0
这是我到目前为止所想出的,
def breakApart(number):
c=0
while number//10**c>=10:
c+=1
integer_part=((number-(number%10**c))//(10**c))
if number//10**c==0:
return
elif number//10**c>0:
print(integer_part)
return breakApart(number%10**c)
这适用于所有数字,但它不会打印出 0。我正在考虑写一些类似的东西,
if (number%10**c)>+10 and (number%10**c)//(10**(c-1))<1:
print(0)
return breakApart(number%10**c)
但如果有连续的0,则不会全部打印。我想我可以像开始时一样使用另一个计数器,但如果有人能为我想出更简单的方法来解决这个问题,请告诉我。
最佳答案
在这里使用递归来发挥你的优势,使 print
调用在递归调用之后进行:
In [1]: def tell_digits(n):
...: rest, first = n // 10, n % 10
...: if rest:
...: tell_digits(rest)
...: print(first)
...:
In [2]: tell_digits(757890)
7
5
7
8
9
0
请注意,如果我将 print
调用放在递归调用之前会发生什么:
In [3]: def tell_digits(n):
...: rest, first = n // 10, n % 10
...: print(first)
...: if rest:
...: tell_digits(rest)
...:
In [4]: tell_digits(757890)
0
9
8
7
5
7
关于python - 如何在 Python 中让我的递归函数返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45332826/