Recursive Fonksiyonla Faktöriyel Almak - Python

Bu makalemizde detaylı bir şekilde Recursive Fonksiyon ile faktöriyel almayı öğreneceğiz. Recursive Fonksiyonları yazmadan önce sınırlarımızı belirlemez isek, fonksiyonumuzu yazarken belirli kısımlarda takılıp kalabiliriz. Bu nedenle bu makalede yapmak istediğim; en başından kod bitimine kadar faktöriyel alma işlemine nasıl yaklaştığımı göstermek.

 

Öncelikle faktöriyel hesabı yapacağımız için faktöriyelin matematiksel olarak karşılığını düşünmemiz gerekmektedir. 

# Faktöriyel Tanımı
0! = 1
n! = n(n-1)!

Yukarıda görmüş olduğumuz tanım bizlere 0 faktöriyelin daima 1'e eşit olduğunu ve 0 dışındaki herhangi bir pozitif tam sayının faktöriyelinin nasıl hesaplandığını anlatmaktadır. Bizim bu tanımdan ilk olarak çıkarabileceğimiz sonuç, Base Case'de yapacağımızın sınırlandırmanın 0 ile bir bağlantısı olması gerektiğidir. 

Fonksiyonumuzu yazmaya başlayalım.

def faktoriyel(n):
    # base case
    if n == 0:
        return 1

Yukarıda görmüş olduğunuz gibi Base Case'imizi oluşturduk. Şimdi sıra Recursive Case'e geldi. Recursive Case kısmını yazmaya başlamadan önce n'in 0'a eşit olmama durumunda nasıl bir işlem yapılacağını kafamızda oluşturmalıyız. Bu işlemi modelleyecek olursak;

4! = 4(4-1)! = 4 * 3! = 4 * (3 * 2 * 1) = 24

Buradaki örneğimizde yinelenen kısmın(recursive) (4-1)! kısmı olduğunu rahatlıkla görebiliriz. Geri kalan 4 ile çarpımında sabit olduğu düşünürsek, Recursive Case'yazmaya başlayabiliriz.

def faktoriyel(n):
    # base case
    if n == 0:
        return 1
    # recursive case
    else:
        # burada n değerimiz n(n-1)! formülünde gördüğümüz üzere sabit olacağından recursive edilecek kısmı n ile çarpıyoruz.
        # recursive olan kısım ise (n-1)! kısmı olacağından dolayı yinelenen kısmı fonksiyonumuzu tekrar çağırarak faktoriyel(n-1) şeklinde yazıyoruz.
        return n * faktoriyel(n-1)

Bir örnek ile kodumuzun nasıl çalıştığını inceleyelim.

print faktoriyel(4)
----------------------------
return 4 * faktoriyel(3)
    return 3 * faktoriyel(2)
        return 2 * faktoriyel(1)
            return 1 * faktoriyel(0)
----------------------------
return 4 * faktoriyel(3)
    return 3 * faktoriyel(2)
        return 2 * faktoriyel(1)
            return 1 * 1
----------------------------
return 4 * faktoriyel(3)
    return 3 * faktoriyel(2)
        return 2 * 1
----------------------------
return 4 * faktoriyel(3)
    return 3 * 2
----------------------------
return 4 * 6

# Çıktı = 24

Bu makalemizde recursive fonksiyon yazarken, probleme nasıl bir yaklaşım göstermemiz gerektiğine recursive fonksiyon ile faktöriyel hesaplama örneği üzerinden değindik. Umarım açıklayıcı ve yardımcı olmuştur.

Diğer makalelerde ve örneklerde görüşmek üzere...

Add comment