1
2
3
4
5
6
7
8
9
10
11

独立探索

发布时间:2017-07-20 07:55   发布人:毛书朋   浏览次数:5742

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.jpg

图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."&nbsp;";
        }
    ?>
</BODY>
</HTML>

      程序4-28.php运行结果如图4-25所示。

4-25.jpg

图4-25

关联课件: 4子项目四 - 独立探索(点击在线预览)


  • 赵博文 2018-01-07 16:05:52
    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);
  • 赵博文 2018-01-07 16:06:22
    PHP获取文件扩展名 以下函数可以快速获取文件的扩展名即后缀。 function getExtension($filename){ $myext = substr($filename, strrpos($filename, '.')); return str_replace('.','',$myext); }