Rekürsiyon nedir?

Rekürsif fonksiyonlar, kısaca kendi kendini oluşturan fonksiyonları betimler. Rekürsiyon aslında problem çözme stratejilerinden bir tanesidir. Prensip olarak genel bir sorunu daha küçük ve basit soruna indirgeyerek sorun çözme yöntemidir. Program yazılımcılar tarafından çok zevkle kullanılan yöntem çoğu problemlere de ışık tutar. Prensip olarak rekürsif fonksiyonlar şöyle tanımlanır: Bir fonsiyonun f(n+1) değeri ondan önceki hesaplanmış f(n), f(n-1), … değerleri tarafından belirlenir. Bu tür fonksiyonlar kendi başlarına bırakılırsa sonsuza kadar devam ederler. Bu nedenle önceden belirlenmiş sınırlar ulaşıldığında rekürsif fonksiyonu hesabı sonlandırır.

Fibonaccı serisi klasik rekürsif bir fonksiyondur. Bilinen sayılar şöyledir:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34,….

Başlangıç değerleri ile fib(0)=0 ve fib(1)=1 fibonaccı serisi için şöyle bir fonksiyon verilebilir:

fib(n)=fib(n-1)+fib(n-2), n>1.

Örnek fib(3):

fib(2)=fib(1)+fib(0)=1+0;
fib(3)=fib(2)+fib(1)=1+1=2;
fib(4)=fib(3)+fib(2)=2+1=3
fib(5)=fib(4)+fib(3)=3+2=5;

Rekürsif fonksiyonların önemi fraktal fonsiyonlarda da görülmektedir. Mesela Pitagoras ağacı diye de anlandırılan ağaç rekürsif yapılmıştır.

Bu resimlere baktığımızda şöyle yargıya varmak pek de şaşırtıcı olmamalı: büyük problemler küçük problemlere indirgenebiliyor. Daha da ilginç olan taraf iterasyon ilerledikçe öne serilen resim o kadar netleşiyor ki bu resmin kendi kendi tarafından oluşacağına inanmak zorlaşıyor. Bu resim mutlaka bir “ressam” tarafından yapılmış olmalı diyoruz.

Hayata baktığımızda da iterasyonun başlangıcı sadece bir döllenmiş yumartadır. Ondan sonra yumurta bölünüyor ve bölünün hücreler de bölünüyor. En kısa zamanda esrarengiz bir hal alıyor. Hücrelerdeki bölünme olayı yukardaki anlatılan rekürşif olaydan biraz daha karmaşık, çünkü hücreler bulunduğu bölgelerden de geri bildirim alarak kaotik bir bölünme sergilemiyorlar. O aldıkları enformasyonlarla hangi genlerin açılıp kapanacağını öğreniyorlar, bu da bölünmeye yön veriyor.

2 yorum “Rekürsiyon nedir?”

  1. Bilgisayar programlama için örnek bir kaç rekürsif fonksiyon

    Fibonacci serisi için

    static int fibonacci(int ay)
    {
       if(ay==1 | ay==2) return 1;
       return fibonacci(ay-1) + fibonacci(ay-2);
    }
    
  2. C Dilinde Örnek – Fibonacci Dizisi

    int fibonacci(int i)
    {
         if (i==1 || i== 2) return 1;
         else return fibonacci(i-1) + fibonacci(i-2);
    }
    

    C Dilinde Örnek – Faktöriyel Hesaplama

    int faktoriyel(int i)
    {
         if (i==1) return 1;
         else return i * faktoriyel(i-1);
    }
    

    C Dilinde Örnek – Ardışık Sayılar

    int ardisikSayilar(int i)
    {
         printf("%d ", i); // Ardışık sayıları ekrana yazdırmak için.
         if (i>1) return ardisikSayilar(i-1);
    }
    

    C Dilinde Örnek – Ardışık Sayıları Toplama

    int ardisikSayilariTopla(int i)
    {
         if (i==1) return 1;
         else return i + ardisikSayilariTopla(i-1);
    }
    

Bir yanıt yazın