CodeBlanks Logo Icon CodeBlanks

Taban durum

low > high olduğunda eleman yok sayıldığını öğrenirsin.

Taban durum

İkili aramanın taban durumu left > right'tır. Bu, arama aralığının boş olduğu ve hedefin bulunamadığı anlamına gelir.

Bu durumda -1 döndürülür. While döngüsü left <= right koşuluyla döndüğü için bu durum doğal olarak sonlanır.

Recursive ikili arama

İkili arama recursive olarak da yazılabilir: search(arr, target, left, right). Taban durum left > right ise -1.

Recursive versiyon daha zarif olabilir ama yığın alanı kullanır. İteratif versiyon O(1) bellek ile daha verimlidir.

Uygulama Recursive ikili arama

binary_rec(arr, target, left, right) yaz. Recursive olarak ara. print(binary_rec([2, 4, 6, 8], 6, 0, 3)) ile 2 yazdır.

Başlangıç kodu

solution.py
def binary_rec(arr, target, left, right):
    # Recursive ara

Örnek çözüm

solution.py
def binary_rec(arr, target, left, right):
    # Recursive ara
    if left > right:
        return -1
    mid = (left + right) // 2
    if arr[mid] == target:
        return mid
    elif arr[mid] < target:
        return binary_rec(arr, target, mid + 1, right)
    else:
        return binary_rec(arr, target, left, mid - 1)
print(binary_rec([2, 4, 6, 8], 6, 0, 3))

Beklenen çıktı

2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Taban durum: kavramları eşleştir

Kavram Anlamı
left > right Taban
return -1 Bulunamadı
while İteratif
Recursive Yığın kullanır

2 İkili arama ne zaman -1 döndürür?

  • Hedef bulunduğunda
  • left > right olduğunda Doğru cevap
  • Dizi boş olduğunda
  • mid = 0 olduğunda

Açıklama: left > right olduğunda -1 döndürülür.

3 Döngü koşulu

Soru
while ____: ile döngü döner.
Cevap
while left <= right: ile döngü döner.

Açıklama: left <= right doğru.

Başlangıç bölümündeki tüm dersler