VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • PHP使用递归生成子数组(代码实例)

给定一个数组,使用递归生成给定数组的所有可能的子数组。本篇文章就将给大家介绍如何用PHP来实现此功能。

例子:

输入:[1,2,3]

输出:[1],[1,2],[2],[1,2,3],[2,3],[3]

输入:[1,2]

输出:[1],[1,2],[2]

方法:

我们使用两个指针start和end来维护数组的起点和终点,并按照下面给出的步骤操作:

1.如果我们已经到达数组的末尾,就停止

2.如果start大于end,则增加结束索引

3.从索引start到end打印子数组并增加起始索引

以下是上述方法的PHP代码实现示例:

  1. <?php  
  2.  
  3. // 使用递归函数为给定数组打印所有可能的子数组 
  4.  
  5. function printSubArrays($arr$start$end)  
  6.  
  7. {   
  8.  
  9.     // 如果我们已经到达数组的末尾,就停止 
  10.  
  11.     if ($end == count($arr))  
  12.  
  13.         return;  
  14.  
  15.         
  16.  
  17.     // 增加端点并从0开始 
  18.  
  19.     else if ($start > $end)  
  20.  
  21.         return printSubArrays($arr, 0,   
  22.  
  23.                               $end + 1);  
  24.  
  25.             
  26.  
  27.     // 打印子数组并增加起始点 
  28.  
  29.     else 
  30.  
  31.     {  
  32.  
  33.     echo "[";  
  34.  
  35.     for($i = $start$i < $end + 1; $i++)  
  36.  
  37.     {  
  38.  
  39.         echo $arr[$i];  
  40.  
  41.         if($i != $end)  
  42.  
  43.         echo ", ";  
  44.  
  45.     }  
  46.  
  47.     echo "]\n";  
  48.  
  49.  
  50.         return printSubArrays($arr$start + 1,   
  51.  
  52.                                     $end);  
  53.  
  54.     }  
  55.  
  56. }   
  57.  
  58.     
  59.  
  60. $arr = array(1, 2, 3);  
  61.  
  62. printSubArrays($arr, 0, 0); 

输出:

  1. [1] 
  2.  
  3. [1,2] 
  4.  
  5. [2] 
  6.  
  7. [1,2,3] 
  8.  
  9. [2,3] 
  10.  
  11. [3] 

出处:http://www.phpfensi.com/php/20200205/12696.html


相关教程