为什么递归函数“无限”循环返回相同的数字

用户名

我在php中编写了此递归函数,以尝试在各种服务器上使用:

<?php
  $a = 1;
  function tryit($num){
    echo $num.'<br>';
    $num++;
    tryit($num);
  }
  tryit($a);

在一台服务器上,它每次都在24773处停止,而另一台服务器每次在18179年左右停止。两者都在30秒的max_execution_time之内:它们运行了大约一秒钟。

为什么执行在这些时候停止?

以撒玛利

调用函数时,它需要存储其局部变量,以及结束后如何继续执行的信息。为此,它使用了一个受限制的所谓的“调用堆栈”。该限制恰好在您的两台计算机上有所不同。

在此处查看更多信息:http : //en.wikipedia.org/wiki/Call_stack

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章