Faktöriyel

faktoriyel (büyük resim için tıklayın)

Bu gönderide faktöriyelin tanımı yapıp PHP ile çözümlenmesinden bahsedeceğim.

Faktöriyel Nedir?

n, 1’den büyük bir doğal sayı olmak üzere; 1’den n’ye  kadar olan doğal sayıların çarpımına n’nin faktöriyeli veya kısaca n faktöriyel denir. n! biçiminde  gösterilir. Kaynak için tıklayın. 1'den büyük herhangi bir doğal sayının faktöriyelini bulmak için hem özyinelemeli (recursive) hem de özyinelemesiz fonksiyon oluşturalım. 

  • function faktoriyelAlRecursive($param){
  • if($param<0)
  • return "doğal sayı girin";
  • elseif($param==0 or $param==1)
  • return 1;
  • else
  • return $param*faktoriyel($param-1);
  • }

Yukarıdaki faktoriyelAlRecursive fonksiyonu, rakam kontrolünden sonra, parametre olarak verilen değer ve özyinelemeli (kendini tekrar çağırarak) olarak değerin 1 eksiği ile çarpılarak geriye değer döndürecek. Örneğin 4 parametresi verildiğinde 24 değeri return edecek. Aşağıdaki fonksiyonda ise özyinelemi olmadan döngü içersinde işlem yapılıp return edilecek.

  • function faktoriyelAl($param) {
  • $sonuc=1;
  • for($i=1; $i<=$param; $i++) {
  •  $sonuc *= $i;
  • }
  • return $sonuc;
  • }

Yukarıdaki faktoriyelAl fonksiyonu ile başlangıç ve bitiş değerleri arasındaki faktöriyel hesabını doğrudan ekrana yazdırmak için oluşturulan fonksiyon aşağıdadır,

  • function faktoriyelleriGetir($baslangic,$bitis){
  • for($i=$baslangic;$i<=$bitis;$i++){
  • $faksonuc=faktoriyelAl($i);
  • if(is_infinite($faksonuc)){
  • echo "sonsuza ulaştım, son hesaplanan değer=>".($i-1);
  • exit;
  • }
  • else{
  • echo $i."! = ".$faksonuc."<br>";
  • }
  • }
  • }

Örnek ekran çıktıları öne çıkan resimde verilmiştir.

omurs

Ö S, 30 Ağustos 2018 Perşembe 15:30 tarihinde kayıt oldu

Etiketler

Beğeni

Toplam Beğeni Sayısı: 2


Yıllara Göre Gönderiler








LombokLoglamaB2C (Business-to-Consumer)B2B (Business-to-Business)İçerik Yönetim Sistemi - CMS (Content Management System)Pagination (Sayfalama)Sanal Özel Ağ - VPN (Virtual Private Network)Cronjob (Zamanlanmış Görevler)Printer-YazıcıJava'daki İlkel Veri Tipleri ve Alabilecekleri DeğerlerBit & Byte ve Hafıza Boyutlarındaki Ölçüm BirimleriSanallaştırma (Virtualization)DNS KayıtlarıE-Fatura ve E-ArşivYazılım Lisans TürleriAudit (Denetim) Açık Kaynak (Open Source)Monitoring (İzleme)Sitemap & Robots.txtKilometretaşı (Milestone)BSMV (Banka ve Sigorta Muameleleri Vergisi)KKDF (Kaynak Kullanımı Destekleme Fonu)Siber Pazartesi (Cyber Monday)Black Friday (Kara Cuma)Hotlink.htaccessCryptoLockerMalwareTrojanWormDependency (Yazılım Geliştirme Sürecinde Paket Bağımlılığı)Configuration (Yazılım Geliştirme Sürecinde Yapılandırma)Yahoo ve Yahoo'nun Başarısızlık NedenleriArchiving (Yazılım Geliştirme Sürecinde Arşivleme)Görsel Dosya Türleri (Image Types)ReleaseVersioning & Tagging (Versiyonlama ve Etiketleme)BuildJob (Yazılım Geliştirme Sürecinde Görevler)SonarQubeCDATA (Character Data)Alan Adı Uzantıları (Domain Name Extensions)Regresyon Kara Kutu (Black-Box) TestBeyaz Kutu (White-box) TestGri Kutu (Grey-box) TestYazılım Geliştirme Sürecindeki Temel Test TürleriKod gözden geçirme (Code Review)Birim Testi (Unit Testing)Yazılım Sürecinde EntegrasyonJAR & WAREager & Lazy Fetch TypeMaskelemeKPI (Key Performance Indicator)KII (Key Impact Indicator)Projenin JAR Dosyasını Oluştur - JAR PathSunucu için Linux dağıtım SeçimiKonyteynerler (container technologies)Runtime & Compile Time (Çalışma ve Derleme Zamanı)@Anotasyonlar (@Annotations)