C++’ta Recursive(Özyinelemeli) Fonksiyonlar

Recursive yani özyinelemeli fonksiyonlar, kendi kendini çağıran fonksiyonlardır. yani fonksiyonu çalıştırmak için o fonksiyona ihtiyacınız vardır ki- benim nazarım da yaratılmaları yüksek derecede yaratıcılık ister. Toplum içinde en çok görülenleri faktöriyel ve fibonacci hesaplatanlarıdır. Yeri gelir yüzünüzü güldürür, yeri gelir ömrünüzü çürütür bu zıkkım. Sınavda fln recursive kullanma zorunluluğunuz olmamasına rağmen kullanmışsanız bence hocanız fazladan 2-3 puan daha vermelidir hatta. Aslında bir Iteration örneği paylaşacaktım burada ama öncesinde bir adet recursive yazmakta yarar gördüm.  Uzun bir kod olmadığı için buraya yazmıyorum. Ekran alıntısına tıklayarak büyültüp oradan bakabilirsiniz.

Bu kodun amacı faktöriyel hesaplatmak. Ve mantığı gayet basit:

n! = n * ( (n-1)! )

Bilgisayar kodu çalıştırırken fonksiyonun içinde o fonksiyonu gördümü bir dakika bekle sen, şu parantez içindeki recursive keratayı hallediyim diyip onu hesaplamaya çalışıyor ve bu kez onun içinde yine aynı şeyi yaşıyor. Bu böyle ta ki 1’e ulaşana kadar devam ediyor. Ve biz de burda kodumuza “else” kısmında yarattığımız istisna koşuluyla en içteki parantezi kapatıp kodun geri doğru gelip adım adım kullanıcının girdiği sayıya geri dönmesini sağlıyoruz. Yani önce

n! = n * ( (n-1)! ) formülünü (n-1)! = 1 oluncaya kadar açıyoruz. ve sonra da 1’i bulduktan sonra geriye doğru sırayla gelip her sonucu ( (n-1) + 1 ) ile çarparak asıl sonucumuza ulaşmaya çalışıyoruz. İşte bu da ekran alıntısı:

 

Yorum bırakın

Filed under C & C++

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s