Yazılıma yeni adım atanlar için öğrenme aşamasındaki bir başka algoritma faktöriyel algoritmasıdır. Faktöriyel algoritması aslında bir sayının 1’den kendisine kadar olan sayıların çarpımıdır. Bu tanım itibariyle de bakıldığında faktöriyel algoritması recursive yani Türkçe karşılığı ile özyineli bir fonksiyondur
Matematiksel formülüne baktığımızda faktoriyel fonksiyonunun tanımı bu şekilde yapılabilir:
n! = n.(n-1).(n-2) … 1
Yani basitçe faktöriyel fonksiyonu herhangi bir sayı için 1’den o sayıya kadar olan ardışık tam sayıların çarpımına eşittir.
Örneğin 4 için : 4!= 4.3.2.1 = 24
5 için : 5! = 5.4.3.2.1 = 120
Recurive tanımı yani özyineli tanımı olarak ifademiz aşağıdaki gibi olabilir:
n! = n (n-1)!
Faktöriyel Algoritmasını değişik dillerde kodlara dökelim.
Javascript ve HTML kullanırken hangi kod kısımların önce hangisinin sonra olduğu bazen önemli olabiliyor. Genel kullanımda Javascript kodları ilgili HTML kodlarının üstünde yazılır.
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script type="text/javascript">
function faktoriyelHesapla(){
var sayi =document.getElementById("sayi").value;
var sonuc=1;
for(var i = 1; i<= sayi; i++)
sonuc =sonuc*i;
document.getElementById("sonuc").value = sonuc;
}
</script>
Bu kodları aşağıdaki HTML kodları için kullanarak kullanıcıdan veriyi alabilir, aldığımız verileri işleyebilir ve sonucu ekrana yazdırabiliriz
<div>
<h3>Faktoriyel Hesapla</h3>
<label>Sayı giriniz : </label>
<input type="text" id="sayi" name="sayi">
</br>
<button class="button-fluid" onclick = "faktoriyelHesapla()">Hesapla</button>
</br>
<label>Sonuç : </label>
<input type="text" id="sonuc" name="sonuc" readonly>
</div>
Burada yazdığın ve recursive olmayan kodlara https://js.do/suleymanduzgun/faktoriyel-hesaplama linkinden erişebilirsiniz.
Javascript Recursive (Özyineli) Faktöriyel Fonksiyonu
Recursive (Özyineli) olarak faktöriyel fonksiyonunu HTML kodları ile birlikte şöyle yazabiliriz.
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script type="text/javascript">
function faktoriyelHesapla(){
var sayi =document.getElementById("sayi").value;
var sonuc=RecursiveFaktoriyelHesapla(sayi);
document.getElementById("sonuc").value = sonuc;
}
function RecursiveFaktoriyelHesapla(sayi){
if(sayi == 1){
return 1;
}
else{
return sayi*RecursiveFaktoriyelHesapla(sayi-1);
}
}
</script>
<div>
<h3>Faktoriyel Hesapla</h3>
<label>Sayı giriniz : </label>
<input type="text" id="sayi" name="sayi">
</br>
<button onclick = "faktoriyelHesapla()">Hesapla</button>
</br>
<label>Sonuç : </label>
<input type="text" id="sonuc" name="sonuc" readonly>
</div>
Javascipt ile ilgili kodları online olarak çalıştırmak için Js.do sitesini ücretsiz kullanabilirsiniz, yukarıda yazdığım kodlara https://js.do/suleymanduzgun/recursive-factoriyel linkinden erişebilirsiniz.. Burada yazdığım kodları da orada teyit edebilirsiniz. Herkese iyi çalışmalar dilerim.
Yorum Ekle