Onaylı Üye
Merhaba arkadaşlar. Konuyu başlıktan anlayacağınız gibi bir miktar açıklamak istiyorum. Öncelikle şunu belirteyim boş yorumları repliyorum çünkü konuları kendi başıma herhangi bir yerden alıntı yapmadan uğraşarak yazıyorum. Gerçi konularımdan spammerları rep yağmuruyla nasıl savuşturduğumu forumdaki modlar daha iyi bilmekte
neyse konuya dönelim. Özyinelemeli fonksiyon bir diğer adıyla recursive fonk adındanda anlaşılacağı üzere kendini çağırmak üzere tanımlaması yapılmakta hemen örnek üzerinde faktöriyel alan bir fonksiyon yaratalım.
hemen fonksiyonu anlatalım main'in içinde fonksiyona 4 değerini gönderdik
faktoriyelAl(4)=4*faktoriyelAl(3) // oldu çünkü x=1 olmadığı sürece bu şekilde döndürme yapıcaktır
faktoriyelAl(3)=3*faktoriyelAl(2)
faktoriyelAl(2)=2*faktoriyelAl(1)
faktoriyelAl(1)=1 // buraya çok dikkat x 1 oldu dolayısıyla if in içine girmicek else in içine giricek ve fonksiyonAl(1) değerini 1 olarak döndürecek değerleride yerine yazdıktan sonrası çok kolay
faktoriyelAl(2)=2*1 //fonksiyonAl(1) =1 di yerine yazdım
faktoriyelAl(3)=3*2 //faktoriyelAl(2)=2 oldu hemen yukarıdaki işlemden yerine yazdım
faktoriyelAl(4)=4*6 //faktoriyelAl(3)=6 oldu gene yukarıdaki işlemden ve faktoriyelAl(4) fonksiyonunun sonucunu 6*4=24 olarak bize döndürmüş oldu.
bu çok basit bir örnekti daha detaylı işlemler yapılabilir.
Öneri: Recursive fonksiyon kullanmak iyi birşey değildir tavsiye edilmez çünkü fonksiyonun sürekli ve sürekli çağırılması söz konusudur performansı olumsuz etkilemesi içten bile değildir.
C++:
int faktoriyelAl(int x)
{
if(x!=1)
return x*faktoriyelAl(x-1);
else
return 1;
}
int main()
{
cout << faktoriyelAl(4);
}
hemen fonksiyonu anlatalım main'in içinde fonksiyona 4 değerini gönderdik
faktoriyelAl(4)=4*faktoriyelAl(3) // oldu çünkü x=1 olmadığı sürece bu şekilde döndürme yapıcaktır
faktoriyelAl(3)=3*faktoriyelAl(2)
faktoriyelAl(2)=2*faktoriyelAl(1)
faktoriyelAl(1)=1 // buraya çok dikkat x 1 oldu dolayısıyla if in içine girmicek else in içine giricek ve fonksiyonAl(1) değerini 1 olarak döndürecek değerleride yerine yazdıktan sonrası çok kolay
faktoriyelAl(2)=2*1 //fonksiyonAl(1) =1 di yerine yazdım
faktoriyelAl(3)=3*2 //faktoriyelAl(2)=2 oldu hemen yukarıdaki işlemden yerine yazdım
faktoriyelAl(4)=4*6 //faktoriyelAl(3)=6 oldu gene yukarıdaki işlemden ve faktoriyelAl(4) fonksiyonunun sonucunu 6*4=24 olarak bize döndürmüş oldu.
bu çok basit bir örnekti daha detaylı işlemler yapılabilir.
Öneri: Recursive fonksiyon kullanmak iyi birşey değildir tavsiye edilmez çünkü fonksiyonun sürekli ve sürekli çağırılması söz konusudur performansı olumsuz etkilemesi içten bile değildir.