1
2
3
4
5
6
7
8
9
10
11

獨立探索

發(fā)布時(shí)間:2017-07-20 07:55&n年說bsp;  發(fā)布人:毛書朋&明影nbsp;  關外 浏覽次數:6873

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

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

圖4-25

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


  • 趙博文 2018-01-07 16:05:52
    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);
  • 趙博文 2018-01-07 16:06:22
    PHP獲取文件擴展名 以下函數可以快速獲取文件妹下的擴展名即後(hòu)綴。 站在function getExte姐好nsion($filename)時光{ $myext = substr($fi商志lename, strrpos($filena輛到me, '.')); return str_replace(大一'.','',$myext); 年裡}