1
2
3
4
5
6
7
8
9
10
11

獨立探索

發(fā)布時間:2017-07-20 07:55   發(fā)布人:毛書朋   浏覽次數:6899

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

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

      程序4-28.php運行結果如圖4-25所示。

4-25.jpg

圖4-25

關聯課件: 4子項目四 - 獨立探索(點擊在線預覽)


  • 趙博文 2018-01-07 16:05:52
    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);
  • 趙博文 2018-01-07 16:06:22
    PHP獲取文件擴展名 以下函數可以快速獲取文件的擴展名即後(hòu)綴。 function getExtension($filename){ $myext = substr($filename, strrpos($filename, '.')); return str_replace('.','',$myext); }