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

时间:2015-05-01 17:35:16

标签: php loops memory

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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