【发布时间】:2013-04-19 21:43:48
【问题描述】:
我正在关注 Ljubomir Perkovic 的《使用 Python 进行计算简介》一书,但我在使用本书递归部分中的一个示例时遇到了问题。代码如下:
def pattern(n):
'prints the nth pattern'
if n == 0: # base case
print(0, end=' ')
else: #recursive step: n > 0
pattern(n-1) # print n-1st pattern
print(n, end=' ') # print n
pattern(n-1) # print n-1st pattern
例如pattern(1),输出应该是0 1 0,并且应该水平显示。但是,当调用函数 pattern(1) 时,什么都不会打印出来。但是如果后面是不带参数的 print 语句,则会显示结果。
>>>pattern(1)
>>>print()
0 1 0
如果我删除递归函数中 print() 函数的 end 参数,我会得到正确的输出(尽管它垂直显示):
>>> pattern(1)
0
1
0
这让我认为递归代码本身是正确的(而且我确认它是由本书网站提供的源代码和勘误表提供的)。但是,如果包含end 参数,我不确定为什么print 语句没有在函数运行时打印输出。任何帮助将不胜感激。
【问题讨论】:
-
这个问题可能是 IDE 特有的。使用在 Ubuntu/gnome-terminal(或 IPython+emacs)上运行的 Python3 似乎不会发生这种情况。
标签: python recursion python-3.x