<?php
function test($n) {
echo $n." ";
if($n>0)
test($n-1);
else
echo "<-->";
echo $n." ";
}
test(1);
这是一个简单递归函数的使用,输出的结果是
1 0 <-->0 1
这个问题得从函数调用的时候内存中变化来理解,在一段php程序里面,每次执行到函数部分时,内存都会开辟一片新的空间,(姑且称之为空间吧),当遇到一个函数开辟一个空间的时候,也就是说$n=10的时候,先执行第一个echo $n." ",这里输出一个数字10吧,然后进入判断语句,遇到test()函数,开辟一个新空间,先不去看新空间里面有什么,下面的echo $n." ";肯定还是要执行的,现在等于说输出了这样的一个结果10 test(9) 10,下面再看test9的情况,同理是不是输出了10 9 test(8) 9 10,继续执行下去,你会发现程序的结果就是你输入的结果了。希望对你有所帮助!
递归在无限级的使用
//这就是在取出的二维数组中添加一个数据level字段拼装到数组中,然后进行判断的操作 public function reSort($data, $parent_id=0, $level=0) { static $ret = array(); foreach ($data as $k => $v) { if($v['parent_id'] == $parent_id) { $v['level'] = $level; $ret[] = $v; $this->reSort($data, $v['id'], $level+1); } } return $ret; }
取出第一个一级的分类和它下面的子分类后,还会去执行另一个一级分类,去找它的子分类;这是递归函数的特性,就是如此的。