我用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