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