1、用函數遞歸實現階乘運算和斐波那契數列。
兒睡 首先,要弄清楚嵌套和遞歸的兩(liǎng)個概念。嵌視音套就(jiù)是一個函數在其函話工數體内調用其他函數。遞歸就(jiù)是匠請一個函數在自己的函數體内調用自身。
下面(miàn)船新用函數遞歸的方式實現程序4-22.php的功能(néng),即求階乘。知對
<!--文件4-27.php:函數遞歸實現階乘運算--> 體紅<HTML> <HEAD&g計東t; <TITLE路劇>函數遞歸實現階乘運算&l舊鐵t;/TITLE> </HEA個拍D> <BODY> &章店nbsp; <?php  影視; funct房知ion factorial($n) &子制nbsp; &n土離bsp; { &n錢花bsp; &nb訊亮sp; 那靜if ($n==1) &n民裡bsp; &nb姐業sp; &nbs如靜p; return 錯店;1; 吃船 &nb不內sp; retu話件rn $n*factorial($n-1); &人土nbsp;  用鄉; } &n房看bsp; &nb笑裡sp; for ($資空i=1;$i<=6;$i ) &nb年學sp; { &n湖科bsp; &n愛時bsp; &nbs開那p; $num=factorial($i); 場小  飛歌; &n知雨bsp; echo&n視媽bsp;$i."!=".$num."<b樹冷r>"; &n綠湖bsp; 遠大  話拿;} &關吧nbsp;?> </區人BODY> </HTML>
程序南花4-27.php運行結果如圖4-24所示。
圖4-24
&nbs風什p;可以看出,使用遞歸可以使程序簡化,但由于遞歸的實現是由棧來完成(我報chéng)的,每一次函數調用都(dōu)會(huì)呢用用棧來保存信息,所以使用遞歸會(huì)占用較多的内存空間,北上而且遞歸的層數越多,資源占用得身拍越多。一些比較典型的編程問題,如“八皇後(hòu)問題”、“錢慢騎士遍曆問題”等都(dōu)可以使用PHP中的遞歸函數思想年我給出漂亮的解法,下面(miàn)遞歸的思想輸出斐波那契數列。
<!--文件4-28.php:使用遞歸求解斐波那契數列--&g紙風t; <HTML> <HEAD> &nb開計sp; <TITLE子著>使用遞歸求解斐波那契數列<綠畫/TITLE> </HEAD> <喝是BODY> 短船 <?php &n習上bsp; fun高來ction fib(志不$n)  大廠;  睡開; { 子水 &nb睡視sp; if ($n<0) &n員雨bsp; &還短nbsp; 個話 &nbs窗會p; return 街子;0; 友問 &n錯冷bsp;  用友;else if&nbs月下p;($n<=2) &nbs低很p; &們們nbsp; 白醫 &nbs又志p; return&n計為bsp;1; &n報白bsp;  內見;  日答; return&nb個日sp;fib($n-1) fib($n-2); &nbs有報p; }內見  我答; echo "斐波那契土日數列的前10項:"; &nb在家sp; &nbs資坐p; for ($i票物=1;$i<=10;$i ) &nbs你一p; &nbs讀空p; { 呢能  車河; &nbs分的p; &nbs她開p;$Var=fib($i); &n業頻bsp; &土話nbsp; 雜森 echo $Var."&n湖少bsp;"; &電術nbsp; &n朋舊bsp;} ?> 東就</BODY> &l長關t;/HTML>
 樹間; 程序4-28.php運行結果如圖4-25所服很示。
圖4-25
關聯課件: 4子項目四 - 獨立探索(點擊在線預覽)
PHP生成(chéng)随機字符串 當我們需要生成(c國線héng)一個随機名字,臨時(shí)密碼等字符串時(sh還月í)可以用到下面(miàn)的函數: function genera站山teRandomString($length = 10) { $時舞characters = '01234567票暗89abcdefghijklmnopqrst在間uvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 用生 $randomString = ''; for ($i自醫 = 0; $i < $leng暗匠th; $i++) { $rando鐘志mString .= $characters[r你票and(0, strlen($characters他弟) - 1)]; } return $rando明作mString; } 使用方法如下: 我為 echo generateRandom音大String(20);
PHP獲取文件擴展名 以下函數可以快速獲取文件妹下的擴展名即後(hòu)綴。 站在function getExte姐好nsion($filename)時光{ $myext = substr($fi商志lename, strrpos($filena輛到me, '.')); return str_replace(大一'.','',$myext); 年裡}