C# Dersleri 53 - Recursive ile Fibonacci Serisi


C# Recursive ile Fibonacci Serisi: Tanımı ve Örnek Uygulama

Fibonacci serisi, her sayının kendisinden önceki iki sayının toplamı olduğu bir sayı dizisidir. Serinin ilk iki elemanı 0 ve 1 olarak tanımlanır. Fibonacci serisi şu şekilde ilerler: 0, 1, 1, 2, 3, 5, 8, 13, 21 ve devam eder. Bu yazıda, C# dilinde recursive bir metot kullanarak Fibonacci serisini nasıl oluşturabileceğimizi öğreneceğiz.

Recursive Fibonacci Mantığı

Fibonacci serisini recursive olarak hesaplamak için iki temel durum (base case) tanımlanır:

  • Base Case 1: Eğer n = 0 ise Fibonacci sayısı 0'dır.
  • Base Case 2: Eğer n = 1 ise Fibonacci sayısı 1'dir.

Bunun dışında, Fibonacci sayısı şu şekilde hesaplanır:

Fibonacci(n) = Fibonacci(n - 1) + Fibonacci(n - 2)

Program Kodu:

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Fibonacci serisinin eleman sayısını girin:");
        int count = int.Parse(Console.ReadLine());

        Console.WriteLine("Fibonacci Serisi:");
        for (int i = 0; i < count; i++)
        {
            Console.Write(Fibonacci(i) + " ");
        }
    }

    // Recursive olarak Fibonacci sayısını hesaplayan metot
    static int Fibonacci(int n)
    {
        if (n == 0) // Base case 1
        {
            return 0;
        }
        if (n == 1) // Base case 2
        {
            return 1;
        }

        return Fibonacci(n - 1) + Fibonacci(n - 2); // Recursive case
    }
}

Programın Çıktısı:

Kullanıcı, Fibonacci serisinden kaç eleman görmek istediğini belirler. Örneğin, kullanıcı 8 girerse, programın çıktısı şu şekilde olur:

Fibonacci serisinin eleman sayısını girin:
8

Fibonacci Serisi:
0 1 1 2 3 5 8 13

Kodun Açıklaması:

  1. Main metodu: Kullanıcıdan bir sayı alır ve bu sayı kadar Fibonacci serisi elemanını ekrana yazdırır. for döngüsü, her bir Fibonacci elemanını sırasıyla hesaplamak için Fibonacci metodunu çağırır.
  2. Fibonacci metodu: Recursive bir yapı kullanarak Fibonacci serisinin belirli bir elemanını hesaplar. Eğer n = 0 veya n = 1 ise base case'ler kullanılır; aksi halde recursive olarak kendisini çağırır.

Recursive Fibonacci'nin Avantaj ve Dezavantajları

Recursive Fibonacci metotlarının avantaj ve dezavantajlarını anlamak önemlidir:

  • Avantaj: Kodun anlaşılması ve yazılması oldukça basittir.
  • Dezavantaj: Her bir elemanı hesaplamak için çok fazla tekrar çağrı (rekürsif çağrı) yapılır, bu da büyük değerler için performans sorunlarına neden olabilir. Örneğin, Fibonacci(10) hesaplanırken birçok gereksiz işlem tekrar edilir.

Bu dezavantaj, dinamik programlama veya iterative çözümler kullanılarak giderilebilir.

Sonuç

Recursive yöntem, Fibonacci serisini hesaplamak için etkili ve kolay anlaşılır bir yaklaşım sunar. Ancak, büyük değerler için performans sorunlarına dikkat etmek gerekir. Fibonacci serisini öğrenirken recursive metotlarla çalışmak, bu önemli programlama kavramını anlamanıza yardımcı olacaktır.