<?php
function demo($num){
echo $num."<br>";
if($num>0)
demo($num-1);
else
echo "----------<br>";
echo $num."<br>";
} demo(10);
?> 谁可以讲解一下为什么输出是10 9 8 7 6 5 4 3 2 1 0 --------- 0 1 2 3 4 5 6 7 8 9 10
而不是10 9 8 7 6 5 4 3 2 1 0 ---------- 0递归函数
function demo($num){
echo $num."<br>";
if($num>0)
demo($num-1);
else
echo "----------<br>";
echo $num."<br>";
} demo(10);
?> 谁可以讲解一下为什么输出是10 9 8 7 6 5 4 3 2 1 0 --------- 0 1 2 3 4 5 6 7 8 9 10
而不是10 9 8 7 6 5 4 3 2 1 0 ---------- 0递归函数
echo $num."<br>"; //打印$num的值
if($num>0) {//如果$num大于0就
demo($num-1); //进入递归
}else {
echo "----------<br>";
}
echo $num."<br>"; //这里总是要执行到的
}
demo(2);你说应该是什么结果?
好吧,我来讲讲:
//假设$num循环到0了
1.<?php
2.function demo($num){————假设当$num执行到0了(也就是循环有10次);(第一步)
3.echo $num."<br>";————则输出0;(第二步)
//下面{}内为if——else的条件语句
5. {
6. if($num>0)————不符合条件;
7. demo($num-1);————跳过
8. else
9. echo "----------<br>";————输出“————”(第三步)
}
//这里已经跳出了条件语句,
10. echo $num."<br>";————输出“0”(第四步)//注意这步在前面的10次循环中还没执行,所以现 在开始执行//
11. } 12. demo(10);
13. ?>
那么接下来就怎样了?接下来距返回到当$num=1时还没循环的那部分,即第10行以及第10行以后的语句 echo $num."<br>";(第四步)
即输出1
然后发后当$num=2时还没循环的那部分,即输出2
..........
最后返回刚开始执行的还没完成的一步,即当$num=1时还没循环的那部分
输出10