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.

omurserdarr

Ömürcan Serdar, 30 Ağustos 2018 Perşembe 15:30 tarihinde kayıt oldu

Etiketler

Beğeni