python3递归打印数字不起作用

时间:2018-03-13 14:26:58

标签: python python-3.x recursion

我正在尝试使用递归(基本上是回忆函数)并打印数字的数字,但是我不能使用str,而且这个函数不能返回任何东西,我在想为什么我的函数错了以及如何实际修理它... 我觉得很难,但如果我不能使用字符串我就无法打印出来 函数应该有一个num作为参数,例子将是12345 并运行python应该打印的函数

5
4
3
2
1

def printDigit(num):
    if num // 10 == 0:
        return num
    print(num % 10)
    return printDigit(num//10)

printDigit(12345)

1 个答案:

答案 0 :(得分:1)

您不打印基础案例,而是将其返回,因此如果没有明确的打印调用,将无法打印函数中的最终值。

def printDigit(num):
    print(num % 10)
    num //= 10
    if num != 0:
      printDigit(num)

printDigit(12345)

输出:

5
4
3
2
1

以下是您的代码在REPL中的作用:

In [1]: def printDigit(num):
   ...:     if num // 10 == 0:
   ...:         return num
   ...:     print(num % 10)
   ...:     return printDigit(num//10)
   ...:
   ...: printDigit(12345)
   ...:
5
4
3
2
Out[1]: 1

如您所见,1此处未打印,而是返回。在许多Python交互式shell中,会打印一个函数的结果,这就是为什么你的输出在shell中看起来是正确的。