Python Dersleri

Python’da Özyineleme (Recursive)

Bu öğreticide, özyinelemeli bir işlev (kendini çağıran bir işlev) oluşturmayı öğreneceksiniz.

özyineleme nedir?

Özyineleme, bir şeyi kendi içinde tanımlama sürecidir.

Fiziksel bir dünya örneği, birbirine bakan iki paralel ayna yerleştirmek olacaktır. Aralarındaki herhangi bir nesne özyinelemeli olarak yansıtılacaktır.


Python Özyinelemeli İşlev

Python’da bir fonksiyonun diğer fonksiyonları çağırabileceğini biliyoruz . Fonksiyonun kendisini çağırması bile mümkündür. Bu tür yapılar özyinelemeli işlevler olarak adlandırılır.

Aşağıdaki görüntü, adlı özyinelemeli bir işlevin çalışmasını göstermektedir recurse.

Python Özyinelemeli İşlev
Python’da Özyinelemeli İşlev

Aşağıda bir tamsayının faktöriyelini bulmak için özyinelemeli bir fonksiyon örneği verilmiştir.

Bir sayının faktöriyeli, 1’den o sayıya kadar olan tüm tam sayıların çarpımıdır. Örneğin, 6’nın faktöriyeli (6 ile gösterilir!)1*2*3*4*5*6 = 720.

Özyinelemeli bir fonksiyon örneği

Çıktı

Yukarıdaki örnekte, factorial()kendisini çağırdığı şekliyle özyinelemeli bir işlevdir.

Bu fonksiyonu pozitif bir tamsayı ile çağırdığımızda, sayıyı azaltarak özyinelemeli olarak kendini çağıracaktır.

Her fonksiyon, sayıyı bire eşit olana kadar altındaki sayının faktöriyeliyle çarpar. Bu özyinelemeli çağrı aşağıdaki adımlarda açıklanabilir.

Neler olup bittiğine dair adım adım süreci gösteren bir resme bakalım:

Özyinelemeli bir yöntemle faktöriyel
Özyinelemeli faktöriyel bir fonksiyonun çalışması

Sayı 1’e düştüğünde özyinelememiz sona erer. Buna temel koşul denir.

Her özyinelemeli işlevin özyinelemeyi durduran bir temel koşulu olmalıdır, aksi takdirde işlev kendisini sonsuz olarak çağırır.

Python yorumlayıcısı, yığın taşmalarına neden olan sonsuz yinelemelerden kaçınmaya yardımcı olmak için yinelemenin derinliklerini sınırlar.

Varsayılan olarak, maksimum özyineleme derinliği1000. Sınır aşılırsa, sonuçlanır RecursionError. Böyle bir duruma bakalım.

Çıktı


Özyinelemenin Avantajları

  1. Özyinelemeli işlevler, kodun temiz ve zarif görünmesini sağlar.
  2. Karmaşık bir görev, özyineleme kullanılarak daha basit alt problemlere bölünebilir.
  3. Dizi oluşturma, özyineleme ile iç içe geçmiş bir yineleme kullanmaktan daha kolaydır.

Özyinelemenin Dezavantajları

  1. Bazen özyinelemenin arkasındaki mantığı takip etmek zordur.
  2. Özyinelemeli çağrılar, çok fazla bellek ve zaman harcadıkları için pahalıdır (verimsizdir).
  3. Özyinelemeli işlevlerde hata ayıklamak zordur.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir