python - 如何在 Python 中让我的递归函数返回 0

标签 python recursion printing return

对于我的递归分配,我们唯一可以使用的内置函数是 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/

相关文章:

从数据文件读取输入数据时,Perl WWW::Mechanize 不打印结果

python - 使用聚合函数计数的 Dataframe 上的 Pandas Timegrouper

c++ - 给定头节点,如何递归地找到链表中的最大项?

javaScript 扫雷器显示空字段

haskell - Haskell 中文本文件中每一行的字符串连接

ios - 在 Zebra iMZ320 上打印(Objective-C + ZebraSDK + ZPL)

python - 当值为对象时如何打印字典(Python)

python - 在特定时期保存 Keras 模型

python - 在现有 python 脚本中包含用户命名的变量

python - 阴谋冲刺 : How to integrate SHAP values