我正在尝试使用递归(基本上是回忆函数)并打印数字的数字,但是我不能使用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)
答案 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中看起来是正确的。