www.adminn.cn
站长正能量分享网!

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

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

给定一个数组,使用递归生成给定数组的所有可能的子数组。本篇文章就将给大家介绍如何用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] 

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《PHP使用递归生成子数组(代码实例)》
文章链接:https://www.adminn.cn/news/7344.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

Adminn.Cn 站长分享圈

帝国CMS精品模板腾讯云优惠券,代金券

2次开发,学习研究使用!扫码支付后联系QQ677123发货!

支付宝扫一扫打赏