PHP ile Faktoriyel Hesaplama

PHP ile Faktoriyel Hesaplama
Şubat 02 16:23 2013 Bu yazıyı yazdır

Merhaba,

Bu yazımda, sizlere hepinizin bildiği faktoriyel hesaplamayı PHP dilinde fonksiyon haline getirmeyi göstereceğim. Bunu yaparken iki farklı şekilde göreceğiz. Birincisi klasik yöntem olan for döngüsü ile hesaplama. Diğer yöntem ise recursive, yani özyineleme şeklinde olacaktır. Recursive ifadesini ilk kez duyanlar buradan bakabilir ya da daha detaylı araştırabilirler.

Yukarıdaki kodlarda görülen for döngüsü, fonksiyon parametresi olarak faktoriyeli hesaplanması istenilen sayıyı, 1 ile kendisi arasındaki tüm sayıları birbiriyle çarpmak suretiyle $total değişkenine atar. Fonksiyon ise sonucu döndürür. Tabi burada, fonksiyon parametresi olarak verilen sayının bir integer olup olmadığı kontrolünü yapmaya gerek duymadım, siz nasıl olsa onu biliyorsunuz 🙂

Gördüğünüz gibi, artık fonksiyon parametresinin sayısal bir değer olup olmadığı da kontrol ediliyor. Fonksiyonu çağırırken;

Bir diğer yöntem olan recursive ise fonksiyon içerisinde kendisini çağırır ve bu yine fonksiyon içerisindeki sınır ölçüsünde tekrarlanır. Şöyle ki;

Faktoriyel hesaplama çok kabaca, sayının kendisi dahil, kendinden önceki pozitif sayıların sıfıra kadar birbirleriyle çarpılmaları demektir. Detaylı tanım için buradan bakabilirsiniz. Yani 5 sayısının faktoriyelini hesaplama işlemi,

şeklinde olmaktadır. For döngüsünde $a değişkeninin 0 değil de 1 olmasının sebebi de bu tanım içerisinde görülebilmektedir. Recursive çözüm yoluyla hesaplama işleminde, yukarıdaki fonksiyon,

şeklinde sonsuza kadar gidecektir. Bunu önlemek için $sayi değişkeninin 2’den küçük olduğu tüm değerlerde 1 değerini döndürmesini sağlayan if koşullu yapısı kullandık.

Bir sonraki yazıda görüşmek dileğiyle!

  Yazı şöyle etiketlendi:
  Kategoriler:
A.Gökhan, M.Sc.
A.Gökhan, M.Sc.

My Name is A. Gokhan SATMAN, and I am a software engineer, Author and game developer. gokhansatman.com

Daha fazla yazı görüntüle
Yorum yaz

0 Yorum

Henüz yorum yok

Tartışma başlatabilirsin.

Yorum ekle

*