Yücel Alkan

Recursion Nedir?

Recursion kelimesi “öz yineleme” olarak Türkçe’ye çevrilmiştir. Matematik ve programlamada kullanılan recursion, temel olarak bir yapının kendi kendini yinelemesidir, tekrar etmesidir.

Programlamada tanımlanan bir fonksiyon, kendi içerisinde tekrar çağrılırsa yani kullanılırsa recursion olarak tanımlanır. Yani temel olarak recursion yapısı şu şekildedir;

function deneme()
{
	// İşlemler	
	deneme();
}

Kodlarda gördüğünüz gibi, deneme adındaki fonksiyon, kendi içerisinde tekrar çağırılıyor.

Recursion ile Neler Yapılabilir?

- Döngü kullanmadan belli bir sayısı dizisi ekrana yazdırılabilir. Örneğin; 1-100 arası sayılar

- Döngü kullanmadan faktöriyel hesabı yapılabilir.

- Web sitelerinde bulunan kategori > alt kategori zincirisi sonsuz bir şekilde kurulabilir.


Bir Mülakat Sorusu : Döngü Kullanmadan Bir Sayı Dizisini Ekrana Yazdırmak

İnternette gördüğüm bir mülakat sorusunu da sizinle paylaşmak istiyorum. Soru şu şekildeydi; herhangi bir döngü kullanmadan (for, while vb) başlangıç ve bitişi belirtilen sayı dizisinin ekrana yazdırılması. Örneğin; başlangıç 10, bitiş de 180 olsun. Bu duruma göre 10'dan başlayarak 180'e kadar olan sayıların tek tek ekrana yazdırılması isteniyordu. Sorunun PHP ile çözümü şu şekildedir;

function dongu($baslangic,$bitis)
    {
        echo $baslangic."<br/>";
        if($baslangic<$bitis)
            dongu($baslangic+1,$bitis);
    }

dongu(10,180);

Kodlardan da anlaşılabileceği gibi, bitiş değerine gelmediği durumlarda dongu adındaki fonksiyon kendi içerisinde tekrar çağrılıyor. İşte bu yapı; basit bir recursion örneğidir. 


Döngü Kullanmadan Faktöriyel Hesabı

Matematikte faktöriyel hesabı; 1'den başlayarak belirtilen sayıya kadar olan tüm sayıların çarpımıyla yapılıyor. Döngüler anlatılırken, çözülen en güzel sorulardan biridir. Ancak sizden faktöriyel hesabı yaparken döngü kullanmamanız isteniyorsa, soruyu yine recursion ile çözmeniz mümkün.

    $sonuc=1;
    function faktoriyel($sayi)
    {
        global $sonuc;
        $sonuc*=$sayi;
        
        if($sayi>1)
            faktoriyel($sayi-1);
        else
            echo $sonuc;
    }

    faktoriyel(5);

Yorumlar
Ahmet Loca (23 Ekim 2019 - 22:53)
Emeğinize sağlık. Şu anda Udemy JSON eğitiminizdeyim. Gayet sade, öz ve anlaşılır bir kurs. Teşekkürler !
Yücel Alkan (27 Ekim 2019 - 15:37)
Rica ederim. Faydalı olduysa ne mutlu. :)
Cevapla
Neo (30 Ağustos 2022 - 15:31)
Çok anlaşılır biçimde anlatılmış, teşekkürler.
Cevapla
Yorum Yapın