国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP遞歸算法的實例程序

2024-05-04 21:49:55
字體:
來源:轉載
供稿:網友

遞歸算法雖然不是高性能的算法但是遞歸我們用到的非常的多,如目錄遍歷或樹形結構都會有用到了,下面一起來看小編整理了一些關于遞歸算法的解析與例子。

遞歸函數為自調用函數,在函數體內直接或間接自己調用自己,但需要設置自調用的條件,若滿足條件,則調用函數本身,若不滿足則終止本函數的自調用,然后把目前流程的主控權交回給上一層函數來執行,可能這樣給大家講解,還是很難明白,直接上例子

  1. function test ($n){ 
  2. echo $n.”  “; 
  3. if($n>0){ 
  4. test($n-1); 
  5. }else
  6. echo “<–>”; 
  7. echo $n.”  ” 
  8. test(2) 

這個例子最終的輸出結果是2 1 0<–>0 1 2

我解釋下  為何輸出是這樣的

第一步,執行test(2),echo 2,然后因為2>0,執行test(1), 后面還有沒來得及執行的echo 2

第二步,執行test(1),echo 1,然后因為1>0,執行test(0),同樣后面還有沒來得及執行的 echo 1

第三步,執行test(0),echo 0,執行test(0),echo 0,  此時0>0的條件不滿足,不在執行test()函數,而是echo “<–>”,并且執行后面的 echo 0

此時函數已經不再調用自己,開始將流程的主控權交回給上一層函數來執行,也就是開始執行剛剛所有test()函數沒來得及輸出的最后一個echo,0的一層是1也就是輸出1  1的上一層是2 也就是輸出2    2沒有山一層  所以呢   輸出的內容就是2 1 0<–>0 1 2

例子,我們要遍歷一個文件夾里面的所有目錄,列出里面所有的文件,PHP本身自帶的有一個readdir的函數,不過只能讀取當前的目錄,根據這個函數,我寫了另外一個函數,用來實現我的需求。函數的原理很簡單,主要就是用了一下遞歸調用.

  1. function file_list($path){ 
  2.     if ($handle = opendir($path)) { 
  3.         while (false !== ($file = readdir($handle))) { 
  4.             if ($file != "." && $file != "..") { 
  5.                 if (is_dir($path."/".$file)) { 
  6.                     echo $path.": ".$file."<br>";//去掉此行顯示的是所有的非目錄文件 
  7.                     file_list($path."/".$file); 
  8.                 } else { //Vevb.com 
  9.                     echo $path.": ".$file."<br>"
  10.                 } 
  11.             } 
  12.         } 
  13.     } 

例子

遞歸的應用中序遍歷二叉樹

  1. void inorder (BinTree T){    
  2. if (T){    
  3. inorder(T->lchild);    
  4. printf(“%c”,T->data);    
  5. inorder(T->rchild);    
  6. }    

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和政县| 措美县| 铜陵市| 宁乡县| 汾西县| 资源县| 抚顺县| 莲花县| 义马市| 象州县| 内江市| 利津县| 永福县| 庆安县| 林州市| 池州市| 驻马店市| 潼关县| 开平市| 遂川县| 区。| 齐河县| 平谷区| 绵竹市| 句容市| 宜章县| 平塘县| 青河县| 太仆寺旗| 宁陵县| 德江县| 绥阳县| 天等县| 镇康县| 九台市| 镇巴县| 阿巴嘎旗| 德兴市| 云和县| 虹口区| 禄劝|