为什么递归函数"infinite"循环return相同的数字

Why does recursive function "infinite" loop return same number

我在php中写了这个递归函数,在各种服务器上试用:

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

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

为什么执行会在这些点停止?

当你调用一个函数时,它需要在某个地方存储它的局部变量,以及它结束后如何继续执行的信息。为此,它使用了所谓的 "Call-stack",这是有限的。您的两台机器上的限制恰好不同。

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