Faktöriyel Çözümleme

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

Daha önce faktoriyel üzerine şu gönderide giriş yapılmıştı. Bu gönderide, parametre olarak verilen sayının faktöriyele denk olması ve denklik halinde çarpım işlemine tabii tutulan değerlerin döndürülmesi amacı ile kodlanan fonksiyondan bahsedeceğim. Ben kendimce reFaktoriyel tanımlaması yaptım bu fonksiyona, literatürde nasıl geçiyor bilmiyorum. reFaktoriyel, faktoriyel işlemlerini ve şu gönderide bulunan bolenleriBul fonksiyonunu barındıran bir sınıf(class) içersine oluşturuldu.

  • function reFaktoriyel($param){
  • $returnDizi=array();
  • $bolenler=$this->bolenleriBul($param);
  • //$ardisikBolenler=array();
  • $returnDizi["ardisiklar"]=array();
  •  
  • $sonuc=1;
  • for($j=-1;$j<(count($bolenler));$j++){
  • if($bolenler[$j]+1==$bolenler[$j+1]){
  • //array_push($sirali,$bolenler[$j]+1);
  • $sonuc=$sonuc*($bolenler[$j]+1);
  • array_push($returnDizi["ardisiklar"],$bolenler[$j]+1);
  • if($sonuc==$param){
  • $returnDizi["faktoriyel"]=end($returnDizi["ardisiklar"]);
  • return $returnDizi;
  • }
  • }
  • }
  • return 0;
  • }

Yukarıdaki fonksiyon ile, parametrenin önce bölenlerini bulacak, sonra döngü ile döngüdeki indise karşılık gelen değerin bir fazlası, döngünün bir sonraki indisine eşit mi kontrolünü gerçekleştirecek ve eşitlik halinde ayrı bir diziye aktaracak, sonrasında son elemanı ayrı bir diziye aktarmış olacak ve böylece dizi return edilecek. Fonksiyon üzerinde düzenlemeler-geliştirmeler yapılabilir, şimdilik örnek olması açısından kontrolleri sağlamadım. Doğrudan örneklendirmeye geçiyorum. Fonksiyona 24 parametresinin verildiğini düşünelim. Kaçın faktoriyeli 24'e eşittir ? 4 x 3 x 2 x 1=24 yani 4'ün faktoriyele eşittir. Peki daha büyük bir sayı için nasıl çözümleyeceğiz? Sayının, önce bölenlerini bulacak, sonra döngü ile döngüdeki indise karşılık gelen değerin bir fazlası, döngünün bir sonraki indisine eşit mi kontrolünü gerçekleştirecek. Sonrasında döngü dışarısında oluşturulan sonuc değişkeni; kendisi ve döngünün indisinin dizi içerisindeki elemanın bir fazlası ile çarpılacak ve parametreye eşit olması halinde dizi return edilecek. Örneğin 720 parametre olarak verilsin, bölenler dizisi;  1,2,3,4,5,6,8,10,12,15,20,24,30,40,60,120 dir. Fonksiyon ile elde edilen ardışık dizi; 1,2,3,4,5 dir. Bu dizinin her bir elemanının çarpımının sonucu parametreye (yani 120) eşittir. Diziden return edilen değerler ardışık dizi ve bu ardışık dizinin son elemanı olan 5 değeridir. Örnek kullanımlar aşağıdadır.

  • $faktoriyelIslem=new Faktoriyel();
  •  
  • $bolenler=$faktoriyelIslem->bolenleriBul(120);
  • echo "";
  • print_r($bolenler);
  • echo "";
  •  
  • $ardisiklar=$faktoriyelIslem->reFaktoriyel(120);
  • echo "";
  • print_r($ardisiklar);
  • echo "";

Ekran çıktısı öne çıkan resimdedir.

omurs

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

Etiketler

Beğeni


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)