1、用函数递归实现阶乘运算和斐波那契数列。
首先,要弄清楚嵌套和递归的两个概念。嵌套就是一个函数在其函数体内调用其他函数。递归就是一个函数在自己的函数体内调用自身。
下面用函数递归的方式实现程序4-22.php的功能,即求阶乘。
<!--文件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
可以看出,使用递归可以使程序简化,但由于递归的实现是由栈来完成的,每一次函数调用都会用栈来保存信息,所以使用递归会占用较多的内存空间,而且递归的层数越多,资源占用得越多。一些比较典型的编程问题,如“八皇后问题”、“骑士遍历问题”等都可以使用PHP中的递归函数思想给出漂亮的解法,下面递归的思想输出斐波那契数列。
<!--文件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生成随机字符串 当我们需要生成一个随机名字,临时密码等字符串时可以用到下面的函数: 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获取文件扩展名 以下函数可以快速获取文件的扩展名即后缀。 function getExtension($filename){ $myext = substr($filename, strrpos($filename, '.')); return str_replace('.','',$myext); }