php递归输出问题。

function test()
{

static $count = 0;

$count++;
echo $count;
if ($count < 10) {
    test();
}
$count--;
echo $count;

}
test();
这段代码的输出为123456789109876543210,前面输出1-109我可以想得通,但是后面输出的8-0是怎么输出的,按照我的想法,应该是输出123456789109就结束了,并没有循环来执行$count--;echo $count;的动作啊?请问我哪里错了,谢谢,我新手,大佬莫怪

阅读 2.3k
2 个回答

直接跟着代码的思路逻辑一遍遍在脑海想想就知道答案的了。当你小于 10 的时候都递归运行代码,每次运行都会自增后输出,直到 $count < 10 不能满足,并执行自减输出。这会也即 9 进入 test() 自增为 10 ,然后自减。但是你别往了,因为你的代码是递归进来的,它还要一层层地出去,你进来多少层就出去多少层,因为你上面自增是一次,下面自减也是一次,所以,最终结果会和开始一样的。

新手上路,请多包涵

调用另一个函数时,当前函数暂停并处于未完成状态。该函数的所有变量的值都还在内存中。执行完调用函数后,回到当前函数,并从离开的地方开始接着往下执行。

摘自:https://hellowac.github.io/pr...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题