Alıştırma: Fibonacci

Fibonacci dizisi [0, 1] ile başlar. n > 1 için bir sonraki sayı, önceki ikisinin toplamıdır.

N’inci Fibonacci sayısını hesaplayan fib(n) adlı bir fonksiyon yazın. Bu fonksiyon ne zaman paniğe (panic) uğrar?

fn fib(n: u32) -> u32 {
    if n < 2 {
        // Temel durum.
        return todo!("Bunu gerçekleştirin (implement)");
    } else {
        // Özyinelemeli (recursive) durum.
        return todo!("Bunu gerçekleştirin (implement)");
    }
}

fn main() {
    let n = 20;
    println!("fib({n}) = {}", fib(n));
}
This slide and its sub-slides should take about 15 minutes.
  • Bu alıştırma, özyinelemeye (recursion) klasik bir giriş niteliğindedir.
  • Öğrencileri temel durumları ve yinelemeli adımları (recursive step) düşünmeye teşvik edin.
  • “Bu fonksiyon ne zaman paniğe (panic) uğrar?” sorusu, tam sayı taşması (integer overflow) hakkında düşünmeniz için bir ipucudur. Fibonacci dizisi hızla büyüyor!
  • Öğrenciler adımlamalı (iterative) bir çözüm de bulabilirler; bu, özyinelemeli (recursion) ile adımlamalı (iteration) arasındaki dengeleri (örneğin, performans, derin özyineleme için yığın taşması) tartışmak için harika bir fırsattır.