ters_çevir fonksiyonunun 4. satırına gelindiğinde s'in 1. indisinden başlayarak, tamamı alınıyor ve ters_çevir fonksiyonuna argüman olarak veriliyor, print ifadesine geçilmiyor. Son çağrıdaki s[0], a olduğu için, önce a ekrana yazdırılıyor, bu çağrıdan önceki çağrının s[0] değeri z olduğu için sonra z yazılıyor.
def ters_çevir(s):
if not s:
return s
else:
print(s)
return s[-1] + ters_çevir(s[:-1])
print(ters_çevir('istihza'))
def ters_çevir(s):
if len(s) < 1:
return s
else:
return ters_çevir(s[1:]) + s[0]
print(ters_çevir('istihza'))
bu iki koda baktığımızda; return ters_çevir(s[1:]) + s[0] soldan sağa doğru silme yaparak tersten yazdırırken , return s[-1] + ters_çevir(s[:-1]) sağdan sola doğru silip yine tersten yazdırıyoruz. soldan sağa silip tersten yazdırmayı anladım da diğerinde nasıl s[-1] ile başlıyoruz anlamadım. Açıklayabilir misiniz ?
>>> def ters_çevir(s):
if not s:
return s
else:
print(s[-1])
return s[-1] + ters_çevir(s[:-1])
>>> print(ters_çevir('istihza'))
a
z
h
i
t
s
i
azhitsi
>>>