当前位置:首页 > PHP教程 > php数组 > 列表

PHP使用递归生成子数组(代码实例)

发布:smiling 来源: PHP粉丝网  添加日期:2020-02-05 13:49:18 浏览: 评论:0 

给定一个数组,使用递归生成给定数组的所有可能的子数组。本篇文章就将给大家介绍如何用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.         return printSubArrays($arr$start + 1,   
  50.  
  51.                                     $end);  
  52.  
  53.     }  
  54.  
  55. }   
  56.  
  57.     
  58.  
  59. $arr = array(1, 2, 3);  
  60.  
  61. 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] 

Tags: PHP递归生成子数组

分享到: