Recursive Fonksiyonlar
Özyinelemeli Fonksiyonlar

Kendisini çağıran fonksiyonlar özyinelemeli(recursive) fonksiyonlardır. Fonksiyonun kendisini çağırma işlemi daha önce kullanmış olduğumuz return komutu ile gerçekleştirilir.
Recursive Fonksiyon
#include <stdio.h> long faktoriyel ( long ); int main( ) { int i; for ( i = 1; i <= 10; i++) printf( "%2d! = %ld\n", i, faktoriyel(i)); return 0; } long faktoriyel( long sayi) { if ( sayi <= 1 ) return 1; else return ( sayi * faktoriyel(sayi - 1 ) ); }
long faktoriyel (long);
Programda faktoriye alt programı long tipinde tanımlanmış bir alt fonksiyondur. long veri tipi 4 byte büyüklüğünde ve +2147483647 büyüklüğünde sayı depolayabilir.
printf(“%2d! = %ld\n” , i, faktoriyel(i));
for döngüsü ile ekrana 1 den 10 kadar saylar yazdırılmış ve %ld long veri tipinin printf kısalması ile faktoriyel alt programı çağrılmıştır.
return (sayi*faktoriyel(sayi-1));
Programın son kısmı olan return kısmında faktoriyel(sayi-1) kodu ile program kendini tekrar çağırmıştır. Bu komutta sayi değeri bir azaltılarak long faktoriyel (long sayi) sayi değeri yerini almıştır. Bu şekilde sayi değeri birden küçük olup else koşulu sağlanana kadar devam etmektedir. Son else koşulu sağlandığında return bir değerini döndürecek ve program sonlanacaktır.
Fibonacci Programı
#include <stdio.h> long fibonacci( long ); int main( ) { long sonuc, sayi; printf( "Bir tamsayi giriniz: " ); scanf( "%ld", & sayi); sonuc = fibonacci(sayi); printf( "Fibonacci( %ld ) = %ld\n", sayi, sonuc); return 0; } /* Yinelemeli tanımlanmış fibonacci fonksiyonu */ long fibonacci( long n ) { if ( n == 0 || n == 1 ) return n; else return fibonacci( n - 1 ) + fibonacci( n - 2 ); }