<\/a>Kendini Tekrarlayan Fonksiyon (Recursive Function)<\/h2>\nBu tip fonksiyonlar, program\u0131n \u00f6zelli\u011fine g\u00f6re kendi kendini tekrar \u00e7a\u011f\u0131rarak bir nevi d\u00f6ng\u00fc olu\u015fturan fonksiyonlard\u0131r. Fakt\u00f6ryel, Fibaonacci Sayd\u0131rma, Asal Say\u0131 Bulma, B\u00f6lme, \u00c7arpma, \u00dcs Alma<\/em> bu t\u00fcre \u00f6rnek verilebilir.<\/p>\n\u00d6rnek 3:<\/p>\n
function usal($sayi,$us)<\/em>
\n{<\/em>
\nif($us>=1) return $sayi*usal($sayi,$us-1);<\/em>
\nelse if($us<0) return “undefined”;<\/em>
\nelse return 1;<\/em>
\n}<\/em><\/p><\/blockquote>\nBu \u00f6rnekteki fonksiyonumuz, $sayi<\/strong> de\u011ferini, $us<\/strong> de\u011feri bir azalt\u0131lm\u0131\u015f fonksiyonun sonucu ile \u00e7arp\u0131yor. Burada dikkat edilmesi gereken noktalardan bir tanesi IF<\/strong> yap\u0131lar\u0131d\u0131r. Bu yap\u0131lar, fonksiyonun ne zaman ne yapaca\u011f\u0131n\u0131 belirlemektedirler. \u0130kinci nokta ise return<\/strong> deyimidir. Fonksiyon return<\/strong> deyimini \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131 anda sona erer. Bu nedenle return<\/strong> deyiminin nerede kullan\u0131laca\u011f\u0131na dikkat edilmesi gerekmektedir.<\/p>\nelse if($us<0) return “undefined”; <\/strong><\/em>sat\u0131r\u0131nda; $us<\/strong> de\u011ferinin 0’dan k\u00fc\u00e7\u00fck olmas\u0131 durumunda tan\u0131ms\u0131z bir de\u011fer g\u00f6nderiyoruz.<\/p>\nelse return 1;<\/strong> sat\u0131r\u0131nda \u00fcss\u00fc 0 olan say\u0131n\u0131n de\u011feri 1 oldu\u011fu i\u00e7in 1 de\u011ferini g\u00f6nderiyoruz.<\/p>\nFonksiyonun \u00e7al\u0131\u015fmas\u0131n\u0131 tabloda g\u00f6sterecek olursak;<\/p>\n
\n\n\nFonksiyon<\/strong><\/td>\nSay\u0131<\/strong><\/td>\n\u00dcs<\/strong><\/td>\nReturn<\/strong><\/td>\nA\u00e7\u0131klama<\/strong><\/td>\n<\/tr>\n\nusal(3,3)<\/td>\n | 3<\/td>\n | 3<\/td>\n | 3*usal(3,2);<\/td>\n | \/\/usal(3,2)=9<\/em> oldu\u011funu alt sat\u0131rda g\u00f6r\u00fcyoruz. Bu nedenle Return=27<\/strong> olur.<\/td>\n<\/tr>\n\nusal(3,2)<\/td>\n | 3<\/td>\n | 2<\/td>\n | 3*usal(3,1);<\/td>\n | \/\/usal(3,1)=3<\/em> oldu\u011funu alt sat\u0131rda g\u00f6r\u00fcyoruz. Bu nedenle Return=9<\/strong> olur.<\/td>\n<\/tr>\n\nusal(3,1)<\/td>\n | 3<\/td>\n | 1<\/td>\n | 3*usal(3,0);<\/td>\n | \/\/usal(3,0)=1<\/em> oldu\u011funu alt sat\u0131rda g\u00f6r\u00fcyoruz. Bu nedenle Return=3<\/strong> olur.<\/td>\n<\/tr>\n\nusal(3,0)<\/td>\n | 3<\/td>\n | 0<\/td>\n | 1<\/strong><\/td>\n\/\/else return 1;<\/em> sat\u0131r\u0131ndan dolay\u0131\u00a0Return=1<\/strong> olur.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n Ba\u015fka bir \u00f6rnekle devam edelim:<\/p>\n Fakt\u00f6ryel:<\/strong> 1’den kendisine kadar olan say\u0131lar\u0131n \u00e7arp\u0131m\u0131na verilen add\u0131r. \u00dcnlem (!<\/strong>) i\u015fareti ile tan\u0131mlan\u0131r. \n3!=1*2*3=6 \n7!=1*2*3*4*5*6*7=5040<\/em> \u015feklindedir.<\/p>\nfunction faktoryel($sayi) \n{ \nif($sayi<0) return false; \nelse if($sayi==0) return 1;<\/em> \nelse return $sayi*faktoryel($sayi-1); \n}<\/em><\/p><\/blockquote>\nBir sonraki \u00f6rne\u011fimiz, 50’den k\u00fc\u00e7\u00fck Fibonacci say\u0131lar\u0131n\u0131 ekrana yazal\u0131m.<\/p>\n Fibonacci Say\u0131lar\u0131:<\/strong> ilk iki say\u0131s\u0131 1 ve 1 olan, her say\u0131n\u0131n kendisinden \u00f6nceki iki say\u0131n\u0131n toplam\u0131na e\u015fit oldu\u011fu say\u0131 dizisidir. \n\u0130lk 6 eleman\u0131: 1, 1, 2, 3, 5, 8<\/p>\n$a=1;<\/em> \n$b=1;<\/em> \n$c=0;<\/em> \nwhile($a<50)<\/em> \n{<\/em> \nfibo();<\/em> \n}<\/em><\/p>\nfunction fibo()<\/em> \n{<\/em> \nglobal $a,$b,$c; \/\/global deyimi fonksiyon d\u0131\u015f\u0131ndaki de\u011fi\u015fken \u00fczerinde i\u015flem yapabilme imkan\u0131 sa\u011flar.<\/em> \necho $a.”-“;<\/em> \n$c=$a+$b;<\/em> \n$a=$b;<\/em> \n$b=$c;<\/em> \n}<\/em><\/p><\/blockquote>\nBir sonraki \u00f6rne\u011fimiz, herhangi bir say\u0131n\u0131n Asal Olup Olmad\u0131\u011f\u0131n\u0131 belirleme.<\/p>\n Asal Say\u0131:<\/strong> Kendisi ve 1 d\u0131\u015f\u0131nda ba\u015fka herhangi bir say\u0131ya b\u00f6l\u00fcnemeyen say\u0131lard\u0131r. Asal say\u0131y\u0131 belirlemek i\u00e7in farkl\u0131 yakla\u015f\u0131mlar mevcuttur. Biz, say\u0131y\u0131 kendisinden k\u00fc\u00e7\u00fck t\u00fcm say\u0131lara b\u00f6lerek kontrol edece\u011fiz.<\/p>\nfunction asalmi($sayi)<\/em> \n\u00a0\u00a0 {<\/em> \n\u00a0\u00a0 if($sayi<1) return false; \/\/FALSE de\u011feri, mant\u0131ksal yanl\u0131\u015f anlam\u0131na gelir.<\/em> \n\u00a0\u00a0 else if($sayi==1) return true; \/\/TRUE de\u011feri, mant\u0131ksal do\u011fru anlam\u0131na gelir. B\u00f6len 1 ise<\/em> \n\u00a0\u00a0 else<\/em> \n\u00a0\u00a0\u00a0 {<\/em> \n\u00a0\u00a0\u00a0 \/\/1 eksi\u011finden ba\u015flat\u0131yoruz, \u00e7\u00fcnk\u00fc kendisine kesinlike b\u00f6l\u00fcn\u00fcr.<\/em> \n\u00a0\u00a0\u00a0\u00a0 for($i=$sayi-1;$i>1;$i–) \/\/1’e b\u00f6lm\u00fcyoruz, \u00e7\u00fcnk\u00fc t\u00fcm say\u0131lar 1’e b\u00f6l\u00fcn\u00fcr.<\/em> \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {<\/em> \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if($sayi%$i==0) return false; \/\/e\u011fer b\u00f6l\u00fcn\u00fcyorsa ASAL DE\u011e\u0130Ldir.<\/em> \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/em> \n\u00a0\u00a0\u00a0\u00a0 return true; \/\/e\u011fer d\u00f6ng\u00fcden \u00e7\u0131kabilmi\u015fse hi\u00e7bir say\u0131ya b\u00f6l\u00fcnmemi\u015f demektir, yani ASALd\u0131r.<\/em> \n\u00a0\u00a0 }<\/em> \n }<\/em> \n$sayi=13;<\/em> \nif(asalmi($sayi)) echo “$sayi say\u0131s\u0131 ASALd\u0131r”;<\/em> \nelse echo “$sayi say\u0131s\u0131 ASAL DE\u011e\u0130Ldir”;<\/em><\/p><\/blockquote>\n <\/p>\n","protected":false},"excerpt":{"rendered":" Fonksiyonlar; programlamada s\u00fcrekli kullan\u0131lan komutlar\u0131n kaydedilip, daha sonra tekrar kullan\u0131lmas\u0131n\u0131 sa\u011flayan yap\u0131lard\u0131r. K\u00fc\u00e7\u00fck programc\u0131klar olarak tan\u0131mlanabilirler. Kulland\u0131\u011f\u0131m\u0131z hemen her komut bir fonksiyondur. Bu yaz\u0131m\u0131zda PHP programlama dilinde fonksiyon yaz\u0131m\u0131, fonksiyon \u00e7e\u015fitleri ve kullan\u0131m\u0131n\u0131 \u00f6\u011frenece\u011fiz. PHP kodlar\u0131n\u0131z\u0131 http:\/\/www.compileonline.com\/execute_php_online.php adresinde deneyebilirsiniz.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[89,8,9,1],"tags":[146,153,152,145,144,147,22,148,151,150,149],"_links":{"self":[{"href":"https:\/\/www.halilturkoglu.com.tr\/wordpress\/wp-json\/wp\/v2\/posts\/359"}],"collection":[{"href":"https:\/\/www.halilturkoglu.com.tr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.halilturkoglu.com.tr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.halilturkoglu.com.tr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.halilturkoglu.com.tr\/wordpress\/wp-json\/wp\/v2\/comments?post=359"}],"version-history":[{"count":19,"href":"https:\/\/www.halilturkoglu.com.tr\/wordpress\/wp-json\/wp\/v2\/posts\/359\/revisions"}],"predecessor-version":[{"id":381,"href":"https:\/\/www.halilturkoglu.com.tr\/wordpress\/wp-json\/wp\/v2\/posts\/359\/revisions\/381"}],"wp:attachment":[{"href":"https:\/\/www.halilturkoglu.com.tr\/wordpress\/wp-json\/wp\/v2\/media?parent=359"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.halilturkoglu.com.tr\/wordpress\/wp-json\/wp\/v2\/categories?post=359"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.halilturkoglu.com.tr\/wordpress\/wp-json\/wp\/v2\/tags?post=359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}
| | | | | | | | | |