Çö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.
u32ile fonksiyon, 47 civarındaniçin paniğe uğrayacaktır. Bunu, girdiyimainolarak 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.