function test()
{
static $count = 0;
$count++;
echo "-- ".$count." --\n";
if ($count < 10) {
test();
}
$count--;
echo "## ".$count." ##\n";
}
test();
结果输出如下:
-- 1 --
-- 2 --
-- 3 --
-- 4 --
-- 5 --
-- 6 --
-- 7 --
-- 8 --
-- 9 --
-- 10 --
## 9 ##
## 8 ##
## 7 ##
## 6 ##
## 5 ##
## 4 ##
## 3 ##
## 2 ##
## 1 ##
## 0 ##
我的疑惑是 当$count
加到10后就不会再调用自身了,那么它会运行下面的代码$count--
然后输出就结束了,可是为什么它还是运行了9次呢,求高手解答。
这样吧,我们假设让$count小于2时来看看整个执行过程:
将小于10改为小于2:
2.将小于2时,里面递归的test()换成函数体内的代码:
3.调用 test()后
4.来看整个详细的执行流程:
5.总结:
当我们假定 $count小于2时,在上面详细的执行流程中我们看到:
test()总共被执行了2次,
输出结果为:
-- 1 --,-- 2 --,## 1 ##,## 0 ##
这时候再回头将 $count小于10,就容易解释楼主的疑问了。
不知道是否帮助到了你。有疑问继续联系。
没有再运行9次呀,
test
函数只运行了10次。但是每个函数中有两个输出,所以总共输出了20次。有没有return不会停止,在调用他自己后还会继续执行的
因为当
$count
=10的时候,该段代码还是执行了,你可以这样写@phping 这是我对于刚才递归的理解,和你的类似。
最后输出