php函数递归
1. php中用递归函数计算出16的4次方
functionfunc($x,$n)
{
if搏枯握($n<=0)
败碰return1;
基庆return$x*func($x,$n-1);
}
echofunc(16,4);
2. thinkphp鐢ㄩ掑綊镐庝箞瀹炵幇镞犻檺鍒嗙被
阃掑綊鍑芥暟鍗充负镊璋幂敤鍑芥暟锛屽湪鍑芥暟浣揿唴鐩存帴鎴栭棿鎺ヨ嚜宸辫皟鐢ㄨ嚜宸憋纴浣嗛渶瑕佽剧疆镊璋幂敤镄勬浔浠讹纴鑻ユ弧瓒虫浔浠讹纴鍒栾皟鐢ㄥ嚱鏁版湰韬锛岃嫢涓嶆弧瓒冲垯缁堟㈡湰鍑芥暟镄勮嚜璋幂敤锛岀劧钖庢妸鐩鍓嶆祦绋嬬殑涓绘带𨱒冧氦锲炵粰涓娄竴灞傚嚱鏁版潵镓ц岋纴鍙鑳借繖镙风粰澶у惰茶В锛岃缮鏄寰堥毦鏄庣槠銆
镐濊矾锛
鍏埚缓绔嫔瑰簲镄勬暟鎹搴揿拰琛锛
3. php递归的方法求和1+2+3+...+n
<?php
function add($n)
{
$result = 0;
for($i=1;$i<$n+1;$i++)
{
$result += $i;
}
return $result; 返回计算结果
}
echo add(5); //调用上面的函数
?>
4. 关于php递归函数创建级联目录的困惑
mkdir1刚进去就是判断$dir存不存在,a/b/c/d/e说白了就是判断有没有e文件夹
如果没有 继续dirname($dir) 判断a/b/c/d路径的d文件夹有没有
如果没有 继续dirname($dir) 判断a/b/c路径的c文件夹有没有
依此类推直到
dirname($dir) 判断a路径的时候 不存在执行当前递归层的mkdir($dir) 创建a
存在则return,然后执行当前递归层上一级的mkdir($dir) 创建a/b
之后继续上一级的mkdir($dir) 创建a/b/c
直到创建完a/b/c/d/e 递归结束
5. 如何理解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)
6. 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);