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为什么会输出,求详细解答。。。。 展开
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为什么会输出,求详细解答。。。。 展开
3个回答
展开全部
这个问题得从函数调用的时候内存中变化来理解,在一段php程序里面,每次执行到函数部分时,内存都会开辟一片新的空间,(姑且称之为空间吧),当遇到一个函数开辟一个空间的时候,也就是说$n=10的时候,先执行第一个echo $n." ",这里输出一个数字10吧,然后进入判断语句,遇到test()函数,开辟一个新空间,先不去看新空间里面有什么,下面的echo $n." ";肯定还是要执行的,现在等于说输出了这样的一个结果10 test(9) 10,下面再看test9的情况,同理是不是输出了10 9 test(8) 9 10,继续执行下去,你会发现程序的结果就是你输入的结果了。希望对你有所帮助!
展开全部
因为你最后一个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." ";, 依次往上返回。
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)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
http://www.aiju020.com/archives/109.html 可以进去看一下。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询