1、用函數遞歸實現階乘運算和斐波那契數列。
首先,要弄清楚嵌套和遞歸的兩(liǎng)個概念。嵌套就是一個函數在其函數體内調用其他函數。遞歸就是一個函數在自己的函數體内調用自身。
下面(miàn)用函數遞歸的方式實現程序4-22.php的功能(néng),即求階乘。
<!--文件4-27.php:函數遞歸實現階乘運算--> <HTML> <HEAD> <TITLE>函數遞歸實現階乘運算</TITLE> </HEAD> <BODY> <?php function factorial($n) { if ($n==1) return 1; return $n*factorial($n-1); } for ($i=1;$i<=6;$i ) { $num=factorial($i); echo $i."!=".$num."<br>"; } ?> </BODY> </HTML>
程序4-27.php運行結果如圖4-24所示。
圖4-24
可以看出,使用遞歸可以使程序簡化,但由于遞歸的實現是由棧來完成(chéng)的,每一次函數調用都(dōu)會用棧來保存信息,所以使用遞歸會占用較多的内存空間,而且遞歸的層數越多,資源占用得越多。一些比較典型的編程問題,如“八皇後(hòu)問題”、“騎士遍曆問題”等都(dōu)可以使用PHP中的遞歸函數思想給出漂亮的解法,下面(miàn)遞歸的思想輸出斐波那契數列。
<!--文件4-28.php:使用遞歸求解斐波那契數列--> <HTML> <HEAD> <TITLE>使用遞歸求解斐波那契數列</TITLE> </HEAD> <BODY> <?php function fib($n) { if ($n<0) return 0; else if ($n<=2) return 1; return fib($n-1) fib($n-2); } echo "斐波那契數列的前10項:"; for ($i=1;$i<=10;$i ) { $Var=fib($i); echo $Var." "; } ?> </BODY> </HTML>
程序4-28.php運行結果如圖4-25所示。
圖4-25
關聯課件: 4子項目四 - 獨立探索(點擊在線預覽)
PHP生成(chéng)随機字符串 當我們需要生成(chéng)一個随機名字,臨時密碼等字符串時可以用到下面(miàn)的函數: function generateRandomString($length = 10) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, strlen($characters) - 1)]; } return $randomString; } 使用方法如下: echo generateRandomString(20);
PHP獲取文件擴展名 以下函數可以快速獲取文件的擴展名即後(hòu)綴。 function getExtension($filename){ $myext = substr($filename, strrpos($filename, '.')); return str_replace('.','',$myext); }