CodeBlanks Logo Icon CodeBlanks

Fibonacci memoization

Recursive Fibonacci'yi memoization ile hızlandırmayı öğrenirsin.

Fibonacci memoization

Recursive Fibonacci'yi memoization ile hızlandır: her n için sonucu bir sözlükte sakla.

İlk çağrıda hesapla ve sakla; sonraki çağrılarda saklanan değeri döndür.

Bu küçük değişiklik, fibonacci'yi Θ(2^n)'den Θ(n)'ye indirir; büyük fark yaratır.

Sözlük kontrolü

Önce n'nin önbellekte olup olmadığını kontrol et. Varsa direkt döndür; yoksa hesapla ve sakla.

Bu, her alt problemin yalnızca bir kez çözülmesini sağlar.

Önbellek kontrolü, memoization'ın kalbidir; doğru uygulanmalıdır.

Uygulama Fibonacci memo

fib_memo(n, memo) yaz. Recursive Fibonacci + memoization. print(fib_memo(10, {})) ile 55 yazdır.

Başlangıç kodu

solution.py
def fib_memo(n, memo):
    # Fibonacci memo

Örnek çözüm

solution.py
def fib_memo(n, memo):
    # Fibonacci memo
    if n in memo:
        return memo[n]
    if n <= 1:
        return n
    memo[n] = fib_memo(n - 1, memo) + fib_memo(n - 2, memo)
    return memo[n]
print(fib_memo(10, {}))

Beklenen çıktı

55

Soru ve cevaplar

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

1 Önbellek kontrolü

Soru
if n in ____:
Cevap
if n in memo:

Açıklama: memo doğru.

2 Fibonacci memoization: kavramları eşleştir

Kavram Anlamı
memo Önbellek
dict Sözlük
n Parametre
return Döndür

3 Fibonacci memoization karmaşıklığı nedir?

  • Θ(log n)
  • Θ(2^n)
  • Θ(n^2)
  • Θ(n) Doğru cevap

Açıklama: Θ(n).

İleri seviye bölümündeki tüm dersler