PHP递归函数的问题

<?phpfunctiontest($n){echo$n."";if($n>0)test($n-1);elseecho"<-->";echo$n."";}test(10)... <?php

function test($n){
echo $n." ";
if($n>0)
test($n-1);
else
echo "<-->";
echo $n." ";
}
test(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
但是我就想不明白后面,1 2 3 4 5 6 7 8 9 10为什么会输出,求详细解答。。。。
展开
 我来答
cuiruijunphp
2013-03-18
知道答主
回答量:14
采纳率:0%
帮助的人:7.5万
展开全部
这个问题得从函数调用的时候内存中变化来理解,在一段php程序里面,每次执行到函数部分时,内存都会开辟一片新的空间,(姑且称之为空间吧),当遇到一个函数开辟一个空间的时候,也就是说$n=10的时候,先执行第一个echo $n." ",这里输出一个数字10吧,然后进入判断语句,遇到test()函数,开辟一个新空间,先不去看新空间里面有什么,下面的echo $n." ";肯定还是要执行的,现在等于说输出了这样的一个结果10 test(9) 10,下面再看test9的情况,同理是不是输出了10 9 test(8) 9 10,继续执行下去,你会发现程序的结果就是你输入的结果了。希望对你有所帮助!
谏豆f2
2013-03-17 · TA获得超过201个赞
知道小有建树答主
回答量:413
采纳率:0%
帮助的人:325万
展开全部
因为你最后一个echo $n的问题。

function test($n) {
echo $n." ";
if($n>0)
test($n-1);
else
echo "<-->";

echo $n." ";
}

当==10的时候, 进入test(9), 这个函数执行完毕后,需要执行echo $n." ";;问题是test(9)也是个递归,所以一直到test(1)才可能执行 echo $n." ";, 依次往上返回。
追问
前面说得都理解,依次网上返回??这个是怎么理解的?
追答
当执行到 test(0) 时候 输出什么? 只有test(0) 执行完, test(1) 才能执行完,  test(1)执行完 , 才能执行完test(2)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Harwise
2016-01-22 · TA获得超过2321个赞
知道小有建树答主
回答量:3299
采纳率:0%
帮助的人:1145万
展开全部
http://www.aiju020.com/archives/109.html 可以进去看一下。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式