php函数递归
<?function f($a)
{
if($a<10)
{
echo "before:".$a."</br>";
f($a+1);
echo"after:".$a."</br>";
}
}
f(0);
?>结果:
before:0
before:1
before:2
before:3
before:4
before:5
before:6
before:7
before:8
before:9
after:9
after:8
after:7
after:6
after:5
after:4
after:3
after:2
after:1
after:0
不明白after后面是怎么回事,求解啊 after:9在所有f(9)执行之后才打印的,然后是after:8.........
明白没? 假设 if($a<2) 这样能理解吗,f($a+1);--f(1),用代码代入:function f($a)
{
if(0<10)
{
echo "before:".$a."</br>";
// f(1);
if(1<10)
{
echo "before:".$a."</br>";
f(2);
echo"after:".$a."</br>";
}
echo"after:".$a."</br>";
}
} 本帖最后由 hq8318 于 2011-05-11 23:10 编辑
再代入就是:function f($a)
{
if(0<10)
{
echo "before:".$a."</br>";
// f(1);
if(1<10)
{
echo "before:".$a."</br>";
// f(2);
if(2<10)
{
echo "before:2</br>";
echo"after:2</br>";
}
echo"after:".$a."</br>";
}
echo"after:".$a."</br>";
}
} 学习了 假设 if($a
hq8318 发表于 2011-05-11 23:02 http://bbs.chinaunix.net/images/common/back.gif
当a=9的 时候,后面为什么会是输出8,7,6。。。这样减一了呢? 假设 if($a
hq8318 发表于 2011-05-11 23:02 http://bbs.chinaunix.net/images/common/back.gif
if($a<10)
{
echo "before:".$a."</br>";
f($a+1);
echo"after:".$a."</br>";
}
输出 before:9 然后调用函数f(9+1) 也就是f(10)
为什么后面after会输出9,8,7.......? 为什么后面after会输出9,8,7.......?
应该是变量的作用域! 为什么后面after会输出9,8,7.......?
应该是变量的作用域!
maochanglu 发表于 2011-05-12 11:01 http://bbs.chinaunix.net/images/common/back.gif
能说明白点吗?这里没看到变量a的自减运算啊 本帖最后由 hq8318 于 2011-05-12 14:01 编辑
暂时不要去考虑“当a=9的 时候”,将它转化为:“当a=3的 时候”----“$a<3”时,后面为什么会是输出0,1,2,2,1,0。
function f($a)
{
if(0<3)
{
echo "before:".$a."</br>";
// f(1);
if(1<3)
{
echo "before:".$a."</br>";
// f(2);
if(2<3)
{
echo "before:2</br>";
//if(3<3),不成立,不执行语句
echo"after:2</br>";
}
echo"after:".$a."</br>";
} echo"after:".$a."</br>";
}
}
页:
[1]
2