私は、Ljubomir PerkovicによるPythonを使用したコンピューティングの紹介の本を読んでおり、本の再帰セクションの例の1つに問題があります。次のようにコードは次のとおりです。Python3で再帰関数の中でprint()を使用する
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を使用しているとは思われません。 – unutbu