Recursive Fonksiyonlar

Özyinelemeli Fonksiyonlar

Recursive Fonksiyonlar Başlık Görseli

   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

  1. #include <stdio.h>
  2.  
  3. long faktoriyel ( long );
  4.  
  5. int main( )
  6. {
  7. int i;
  8.  
  9. for ( i = 1; i <= 10; i++)
  10. printf( "%2d! = %ld\n", i, faktoriyel(i));
  11. return 0;
  12. }
  13.  
  14. long faktoriyel( long sayi)
  15. {
  16. if ( sayi <= 1 )
  17. return 1;
  18. else
  19. return ( sayi * faktoriyel(sayi - 1 ) );
  20. }
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-1kodu 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ı

  1. #include <stdio.h>
  2. long fibonacci( long );
  3.  
  4. int main( )
  5. {
  6. long sonuc, sayi;
  7.  
  8. printf( "Bir tamsayi giriniz: " );
  9. scanf( "%ld", & sayi);
  10. sonuc = fibonacci(sayi);
  11. printf( "Fibonacci( %ld ) = %ld\n", sayi, sonuc);
  12. return 0;
  13. }
  14.  
  15. /* Yinelemeli tanımlanmış fibonacci fonksiyonu */
  16. long fibonacci( long n )
  17. {
  18. if ( n == 0 || n == 1 )
  19. return n;
  20. else
  21. return fibonacci( n - 1 ) + fibonacci( n - 2 );
  22. }
3.5 4 votes
Article Rating
Abone ol
Bildir
0 Yorum
Satır İçi Geri Bildirimler
Tüm yorumlar
0
Düşüncelerinizi paylaşınx