içinde yineleme işlevlerinin içinde yazdırma() işlevini kullanarak, Ljubomir Perkovic tarafından Python'a Giriş İşlemine Giriş kitabını takip ediyorum ve kitabın yineleme bölümünde yer alan örneklerden biriyle sorun yaşıyorum. kod aşağıdaki gibidir:Python3
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
diyelim için
, pattern(1)
, çıkış 0 1 0
olmalı ve yatay görüntülenmesi gerekir. Bununla birlikte, pattern(1)
işlevini çağırırken hiçbir şey yazdırılmaz. Ancak, bunu argümanlar olmadan bir baskı ifadesi izlerse, sonuçlar görüntülenir. Ben özyinelemeli işlevi içinde print()
fonksiyonların end
argüman kaldırırsanız (dikey görüntüler de olsa)
>>>pattern(1)
>>>print()
0 1 0
, ben doğru çıktı almak:
>>> pattern(1)
0
1
0
Bu beni düşündürüyor bu özyinelemeli kod kendisi doğru (artı kitabın web sitesi tarafından sağlanan kaynak ve errata sayfası ile olduğunu doğruladı). Ancak, print
ifadesinin neden end
parametresi eklenmişse, işlevlerin işlevler olarak yazdırılmamasına neden olduğundan emin değilim. Herhangi bir yardım büyük takdir edilecektir.
Bu sorun IDE özgü olabilir:
bu iki programlarda farkı görün. Ubuntu/gnome-terminalinde (veya IPython + emacs'de) çalıştırılan Python3'ün kullanılmadığı görülüyor. – unutbu