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) ;
}
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
Tags: c#, faktoriyel, fibonacci, fonksiyon, recursion, recursive