热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP递归遍历与数组实战

递归的实质就是出现零界点后返回。如果不存在零界点则会出现死循环。所以如何判断零界点是递归能否成功运用的重要点,下面我给出得实

递归的实质就是出现零界点后返回。如果不存在零界点则会出现死循环。所以如何判断零界点是递归能否成功运用的重要点,下面我给出得实例都明确注释了零界点。其次,我们需要理解递归的流程走向问题。我总结为:先深入,再弹出,我们可以计算出函数被执行了多少次。下面我们就实例讲述此问题。

平板视图
打印?
01
02 // 一个简单的数组递归遍历 求 N 的阶乘
03 if(strtolower($_SERVER['REQUEST_METHOD']) =='post')
04 {
05 $num=intval($_REQUEST['number']);
06 if($num<0 )
07 {
08 exit('数组不合法!');
09 }
10 if($num== 0)
11 {
12 $result= 1;
13 }
14 else
15 {
16 $result= recursive($num);
17 }
18 echostrval($num)."的阶乘是:".$result;
19 }
20 else
21 {
22 echo"请在上述文本框输入数字!";
23 }
24 functionrecursive($n)
25 {
26 if($n== 1)return$n;//零界点 此处是弹出
27 return$n* recursive($n-1);//此处是深入
28 }
29 // 阶乘的零界点是 n->1->n的一个过程
30 echo"
31   
32
33   
34 ";
35 // 数组的递归 无限分类
36 $arr=array(array('id'=>1,'name'=>'新闻中心','father'=>0,'deep'=>1),
37 array('id'=>2,'name'=>'国内中心','father'=>1,'deep'=>2),
38 array('id'=>3,'name'=>'娱乐新闻','father'=>0,'deep'=>1),
39 array('id'=>4,'name'=>'体育新闻','father'=>3,'deep'=>2),
40 array('id'=>5,'name'=>'明星绯闻','father'=>4,'deep'=>3),
41 array('id'=>6,'name'=>'北京新闻','father'=>1,'deep'=>2),
42 array('id'=>7,'name'=>'北京娱乐','father'=>3,'deep'=>2));
43 // id=>标识
44 // name=>名称
45 // father=>父ID
46 // deep=>栏目深度
47 functionUnlimitedclass($arr=array(),$fid= 0)
48 {
49 //数组实现 必须使用静态数组 否则值会丢失
50 static$results=array();
51 if(is_array($arr) &&$arr)
52 {
53 foreach($arras$k=>$v)
54 {
55 //零界点是所有顶级栏目的最末节点 此处既为弹出
56 if($v['father'] ==$fid)
57 {
58 $results[$v['id']] =array('id'=>$v['id'],'name'=>$v['name'],'deep'=>$v['deep']);
59 //递归调用 此处是深入
60 Unlimitedclass($arr,$v['id']);
61 }
62 }
63 //返回结果集
64 return$results;
65 }
66 }
67 $re= Unlimitedclass($arr);
68 if(is_array($re) &&$re)
69 {
70 foreach($reas$k=>$v)
71 {
72 echostr_repeat('  ',$v['deep']).$v['name'].'
73 ';
74 }
75 }
76 // 上例中定义了一个静态变量,所谓静态变量就是在离开函数之后 值不会丢失;
77 // 猴子选大王也是一个经典的数组操作
78 // 给你一个数N 每M次剔除一只猴子 一直循环下去直到剩下最后一只,则这只猴子就是大王
79 $mOnkeys= range(1,10);// 猴子编号
80 $j= 3;//每3此剔除一个
81 for($i=0;count($monkeys)>1;$i++)
82 {
83 if(($i+1)%$j== 0)
84 {
85 unset($monkeys[$i]);
86 }
87 else
88 {
89 array_push($monkeys,$monkeys[$i]);
90 unset($monkeys[$i]);
91 }
92 }
93 print_r($monkeys);


推荐阅读
  • 本文详细介绍了如何在不同操作系统和设备上设置和配置网络连接的IP地址,涵盖静态和动态IP地址的设置方法。同时,提供了关于路由器和机顶盒等设备的IP配置指南。 ... [详细]
  • 在年前忙碌的家务和年后走亲访友之后,终于有时间重新投入到编程的世界中。年前遇到了连通器问题的困扰,希望今晚能够顺利解决。新的一年,新的开始,期待在技术领域取得更大的进步。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • 本文介绍如何使用PHP在WordPress中根据分类类别ID或名称获取所有相关文章,提供详细的方法和代码示例。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 本文详细介绍了如何使用 PHP 接收并处理微信支付的回调结果,确保支付通知能够被正确接收和响应。 ... [详细]
  • 小编给大家分享一下如何移除URL中的index.php,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收 ... [详细]
  • 本文详细介绍了如何在PHP中删除数组中的指定元素、第一个元素和最后一个元素,并提供了具体的代码示例和相关函数的使用说明。 ... [详细]
  • 本文详细解析了汉字‘犐’的基本字义及其在古代文献中的应用,旨在为读者提供全面而深入的理解。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • 本文详细介绍了在XAMPP环境中如何修改Apache和MySQL的默认端口号,并确保WordPress能够正常访问。同时,提供了针对Go语言社区和Golang开发者的相关建议。 ... [详细]
  • 澄清对 IN 语句索引使用常见误解
    本文旨在纠正关于 MySQL 中 IN 语句是否使用索引的常见误解。许多人认为 IN 语句的索引使用与字符串长度有关,实际上,影响因素更为复杂,包括数据分布和 MySQL 版本等因素。 ... [详细]
  • PHP 实现多级树形结构:构建无限层级分类系统
    在众多管理系统中,如菜单、分类和部门等模块,通常需要处理层级结构。为了高效管理和展示这些层级数据,本文将介绍如何使用 PHP 实现多级树形结构,并提供代码示例以帮助开发者轻松实现无限分级。 ... [详细]
author-avatar
苏打c
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有