导航:首页 > 编程语言 > php递归例子

php递归例子

发布时间:2025-09-15 03:56:03

Ⅰ 如何理解php中的递归函数 (详细讲解)

递归其实就是“一个函数的自调用”
在这个“自调用”的过程中,必须要有一个变化的“参数”,当这个“参数”达到你的期望值的时候,终止该“自调用”过程

拿楼主的程序来说

demo($n)内部又有调用demo($n-1),构成了“自调用”
且,$n又有一个“期望值”,即是$n>1,不满足此条件时,该自调用终止

即是说,最后一个执行的demo是demo($n9-1),其中$n9=2,然后返回为1(因为执行了return 1)
则$n9*demo($n9-1)即等于 2*demo(2-1),又等于2*1=2;
则$n8*demo($n8-1)即等于 3*demo(3-1),又等于3*2=6;
则$n7*demo($n7-1)即等于 4*demo(4-1),又等于4*6=24;
……
依次类推

这样想:
demo(1)是等于1,这个没有疑问吧?
然后demo(2)等于2*demo(1)=2*1=2
然后demo(3)等于3*demo(2)=3*2=6
……
一直到demo(10)

Ⅱ php阃掑綊镆ヨ涓崭细锛岋纴姹傛暀銆傚氨鏄涓涓涓夌骇鍒嗙被浼犱釜ID镓惧埌浠栫殑涓婄骇锛岃缮链夌埗绾с伞

杩欑岖被鍨嬬殑鏁版嵁锛屼竴鑸鏁版嵁搴扑腑锛屼竴寮犺〃浼氭湁瀛桦湪涓や釜瀛楁碉纴涓涓鏄瀹冩湰韬玦d锛屽彟涓涓鏄瀹幂殑鐖剁骇parent_id銆
镞㈢劧瑕佹垒鍒板畠镄勭栫埗绾э纴sql璇鍙ヨ繖镙峰啓锛
$id = empty($_POST['id'])?'':$_POST['id'];
$parent_id = get_parent_id($id);
$p_p_id = get_parent_id($parent_id);
function get_parent_id($id){
$sql = "select parent_id from ecs_table1 where id=" . $id锛
return($GLOBALS['db']->getone($sql ));
}
阃掑綊锛屽氨鏄镙规嵁鐜版湁镄刬d锛岄吨澶嶅彇銆
涓婇溃get_parent_id鍙鏄銮峰彇鐖籼d锛屽綋铹讹纴浣犲彲浠ュ啓涓涓鐩存帴銮峰彇绁栫埗id镄勫嚱鏁般
涓嶈繃锛岀幇鍦ㄥぇ閮ㄥ垎php缃戠珯锛岄兘鍙浼氭湁銮峰彇鐖剁被镄勫嚱鏁帮纴𨱍砫iscuz锛宔cshop绛夈傝幏鍙栫栫埗id锛屽氨鏄涓嶆柇镄勮幏鍙栬id镄勭埗id銆

Ⅲ PHP中多维数组如何转变成一维数组<求PHP高手!!!!!!!!!!!!!!>

在PHP中,可以使用递归函数将多维数组转变为一维数组。以下是如何实现这一功能的详细解答:

答案

  1. 使用递归函数

    • 定义一个递归函数,用于遍历多维数组的每个元素。
    • 在函数中,检查当前元素是否为数组。如果是,则递归调用该函数;如果不是,则将该元素添加到结果数组中。
  2. 示例代码:“`php$array1 = array, 1 => array, 2 => array);

function array_multi2array { static $result_array = array; foreach { if ) { array_multi2array; } else { // 注意:这里直接以$key为索引添加到结果数组中,会丢失原多维数组中的键名信息 // 如果需要保留原键名信息,需要调整逻辑,例如使用多维键名作为新数组的键 $result_array[] = $value; // 仅添加值到结果数组 } } return $result_array; }

$array2 = array_multi2array; print_r; “`

  1. 注意事项

    • 键名丢失:上述代码在将多维数组转换为一维数组时,会丢失原多维数组中的键名信息,只保留值。如果需要保留这些键名信息,需要调整逻辑,例如将多维键名组合起来作为新数组的键。
    • 静态变量:在递归函数中使用了静态变量$result_array来存储结果,以确保在递归过程中不会重置结果数组。
  2. 改进以保留键名信息

    • 如果需要保留原多维数组中的键名信息,可以修改递归函数,使其能够处理并存储这些键名。这通常涉及到更复杂的逻辑,例如使用多维键名作为新数组的键,或者创建一个包含键名和值的新数组结构。

通过上述方法,你可以将PHP中的多维数组有效地转变为一维数组。

Ⅳ php左右值无限递归用在哪些地方

php左右值无限递归用在哪些地方
while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可继续循环。
【例6.4】
main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
while (n--)
printf("%d ",a++*2);
}
本例程序将执行n次循环,每执行一次,n值减1。循环体输出表达式a++*2的值。该表达式等效于(a*2;a++)。
2) 循环体如包括有一个以上的语句,则必须用{}括起来,组成复合语句。
6.4 do-while语句
do-while语句的一般形式为:
do
语句
while(表达式);
这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。其执行过程可用下图表示。
【例6.5】用do-while语句求 。
用传统流程图和N-S结构流程图表示算法,见图:

Ⅳ PHP怎么递归

下面我举一个其他的例子,虽然不是族谱,但是原理都是一样的。

在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。
递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据。
Mysql
首先我们准备一张数据表class,记录商品分类信息。表中有三个字段,id:分类编号,主键自增长;title:分类名称;pid:所属上级分类id。
class表结构:

CREATE TABLE IF NOT EXISTS `class` (
`id` mediumint(6) NOT NULL AUTO_INCREMENT,
`title` varchar(30) NOT NULL,
`pid` mediumint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

插入数据后,如图:

如果要输出json格式的数据,则可使用:

echo json_encode($list);

阅读全文

与php递归例子相关的资料

热点内容
驱动器加密保存文件 浏览:69
希沃白板如何安装安卓应用 浏览:917
手机私密相册哪个app最好 浏览:866
pythonopencvframe 浏览:861
达州加密自动监测网 浏览:341
高一数学必修三算法 浏览:800
服务器未响应怎么解决手机 浏览:184
程序员回到古代 浏览:402
软件合并一个文件夹 浏览:658
设置Android程序图标 浏览:365
app哪个局 浏览:905
源码编辑器中怎么保存 浏览:463
python背景图片代码 浏览:449
3D卡片下载哪个App 浏览:532
如何用服务器登录微信 浏览:841
html5移动开发pdf下载 浏览:525
如何查看png图片是否加密 浏览:821
php递归例子 浏览:191
服务器参数配置未响应是什么意思 浏览:605
pythonchardet模块 浏览:753