Python - Özyineleme
Özyineleme, bir işlevin kendisini çağırmasına izin verir. Sabit kod adımları, yeni değerler için tekrar tekrar çalıştırılır. Ayrıca yinelemeli aramanın ne zaman biteceğine karar vermek için kriterler belirlemeliyiz. Aşağıdaki örnekte, ikili aramaya yinelemeli bir yaklaşım görüyoruz. Sıralı bir liste alıp indeks aralığını özyinelemeli fonksiyona girdi olarak veriyoruz.
Yineleme kullanarak İkili Arama
Aşağıda gösterildiği gibi python kullanarak ikili arama algoritmasını uygularız. Sıralı bir öğe listesi kullanıyoruz ve başlangıç ve bitiş indeksi ile birlikte listeyi girdi olarak almak için özyinelemeli bir işlev tasarlıyoruz. Daha sonra ikili arama işlevi, aranan öğeyi bulana kadar kendini çağırır veya listede yokluğuna karar verir.
def bsearch(list, idx0, idxn, val):
if (idxn < idx0):
return None
else:
midval = idx0 + ((idxn - idx0) // 2)
# Compare the search item with middle most value
if list[midval] > val:
return bsearch(list, idx0, midval-1,val)
elif list[midval] < val:
return bsearch(list, midval+1, idxn, val)
else:
return midval
list = [8,11,24,56,88,131]
print(bsearch(list, 0, 5, 24))
print(bsearch(list, 0, 5, 51))
Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -
2
None