Çözüm

fn fib(n: u32) -> u32 {
    if n < 2 {
        return n;
    } else {
        return fib(n - 1) + fib(n - 2);
    }
}

fn main() {
    let n = 20;
    println!("fib({n}) = {}", fib(n));
}
  • Çözümü adım adım uygulayın.
  • Özyinelemeli çağrıları ve bunların nihai sonuca nasıl yol açtığını açıklayın.
  • Tamsayı taşma sorununu tartışın. u32 ile fonksiyon, 47 civarında n için paniğe uğrayacaktır. Bunu, girdiyi main olarak değiştirerek gösterebilirsiniz.
  • Alternatif olarak adımlamalı (iterative) bir çözüm gösterin ve performansını ve bellek kullanımını özyinelemeli (recursive) çözümle karşılaştırın. Adımlamalı (iterative) bir çözüm çok daha verimli olacaktır.

Daha Fazlasını Keşfedin

Daha ileri bir tartışma için, özyinelemeli (recursive) Fibonacci hesaplamasını optimize etmek amacıyla bellekleme (memoization) veya dinamik programlama tekniklerini tanıtabilirsiniz; ancak bu, mevcut konunun kapsamı dışındadır.