24 Ağustos 2013 Cumartesi

PHP ile Recursive Fonksiyon Mantığı

PHP ile Recursive Fonksiyon Mantığı
PHP ile Recursive Fonksiyon Mantığı
Programlama dillerinde genellikle anlatılan 2 tür fonksiyon vardır. Bunlar geriye değer döndüren yada değer döndürmeyen fonsiyonlardır.Bu tür fonksiyonlara Iterative fonksiyonlar denir.

Bir üçüncü ve yeni başlayan birine anlatılmayan fonsiyon türü ise recursive fonksiyon türüdür.Bu fonksiyonda fonksiyonun içinde fonksiyon kendini çağırır ve işleme en baştan başlar.

Genel olarak yukarıdaki tanımdan recursive fonksiyonun döngü gibi işlediği kanısına varılabilir ancak döngüde girişte verilen şart recursive fonksiyonda fonksiyonun içinde berlirlenir aksi halde sonsuz bir döngü gibi işleyen bir fonksiyon elde etmiş oluruz.

Aşağıda çarpım tablosunu yazan bir recursive fonksiyonu örnek olarak gösterelim.


<?php
function tablo($x) {
   if($x<10) {
      for($i=1;$i<11;$i++) printf("%-3d",$x*$i);
      printf("<br>");
      return tablo($x+1);
   }
   else return 1;
}
tablo(1);
?>


Satırları açıklayacak olursak öncelikle tablo adında normal bir fonsiyonumuz var.

ancak bunu eğer recursive fonksiyon haline getireceksek bir şart koymalıyız, ki bu şart dışında kalınca fonksiyondan çıkabilelim.

çarpım tablosunu yazmak için bize ilk 9 satır gerekli çünki çarpım tablosu 1'ler 2'ler 3'ler .....8'ler 9'lar olarak sıralanır.

başlangıçta x değerine girecek olan 1 sayısı çarpım tablomuzun 1'ler katını oluşturacak

gelen 1 değerini döngüye girdiriyoruz ve 10 kez dönüyor böylece  sayı sürekli bir üst basamakla çarpılmış oluyor yani

1x1=1
1x2=2
1x3=3
-
-
-
1x9=9
1x10=10

gibi ve bu sayıları sayfada yazdırıyoruz. Sıradaki sorun ise diğer bölümleri yani 2'ler 3'ler felan o kısmı yapmak kalıyor burada işin içine recursive kuralı diyelim artık  ile iç içe fonksiyon yapmak kalıyor ve döngüye tekrardan x ile alınan değerin 1fazlasını (yani sıradaki 2'ler katını) hazırlatıyoruz.

İşlem böylelikle 9'lar basamağına kadar geliyor ancak arada if ile x<10 dediğimiz için x=10 olduğunda fonksiyondan çıkıyor ve bize söyle bir değer veriyor.

1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90

Anlamadığınız yerleri lütfen yorumlarda sorun yardımcı olmaya çalışayım.

not:bu konudaki fonksiyonun mantığı kaynak daki aynı isimli konuda c dilinde yazılmıştır bu konuya özel tarafımdan php ile tekrar kodlanmıştır.

Hiç yorum yok:

Yorum Gönder