Recursive Fonksiyonlar

Recursive fonksiyonlar herhangi bir döngü kullanmadan (for, do while, while..) kendisini çağırarak yazılan fonksiyonlardır.

Örneğin; faktoriyel hesaplayan bir fonksiyonu önce normal bir şekilde sonra recursive şekilde yazalim.


int faktoriyel(int n)
{
       int fakt=1;
       for(int i=1; i<=n; i++)
       {
            fakt=fakt*i;
       }
       return fakt;
}

Şimde de recursive şekilde yazalım..

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

Başka recursive foksiyon örnekleri

void draw(int count, int limit)
{
      if (count <= limit)
      {
             for(int i = 0 ; i < count ; i++)
                   cout << "*" ;
             cout << endl;
             draw(count + 1, limit);
       }
}

Eğer fonksiyon çalıştırılırsa –> draw(3,7);
***
****
*****
******
*******

———————————————————————-

void countUntil(int low, int up)
{
      if (low <= up)
      {
             cout << low <<" ";
             countUntil(low + 1, up);
       }
}

Eğer fonksiyon çalıştırılırsa –> countUnti(2,8);
2 3 4 5 6 7 8

———————————————————————-

Bir dizideki en büyük elemanı bulan recursive fonksiyonu yazalım.

int enBuyuk(int dizi[],int ilk, int son)
{
      int buyuk;
      if(ilk==son)	
             return dizi[ilk]; 
      else						
      {
	     buyuk=enBuyuk(dizi,ilk+1,son);
	     if(dizi[ilk]>=buyuk) 
                  return dizi[ilk];
	    else 
                  return buyuk;
     }
}

Eğer dizi[5]={5,23,28,7,1} olursa enBuyuk(dizi,0,4);
NOT: 0 ile 4 başlangıç ve son indisler..
28

———————————————————————-

Fibonacci sayisini bulan recursive fonksiyon..

int Fib(int n)
{
      if (n<=1) return n;
      else return Fib(n-1) + Fib(n-2);
}

{fn } = 0,1,1,2,3,5,8,13,21,34,55,… (fibonacci serisi)
Eğer fonksiyon çalıştırılırsa –>
Fib(4); // 3
Fib(5); // 5
Fib(6); // 8

Leave a Reply

Your email address will not be published. Required fields are marked *