PHP-php递归有最大层次限制么

PHP-php递归有最大层次限制么

晚风撩人 发布于 2017-02-15 字数 297 浏览 1323 回复 6

百度了一圈,也没有找出答案,或者哪里可以配置这个递归的层数限制。
用这个测试代码测试的话,我输出是22753就报错了。

<?php
function tryit($level)
{
$a = array();
$a[0] = 232;
$a[1] = 542;

echo $level."n";
tryit($level+1);
}
tryit(0);

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

想挽留 2017-10-07 6 楼

个人觉得一定会有的,即使PHP语言本身没有限制递归层次,当递归到一定深度的时候,栈空间不够了,程序也会崩溃的。所以不可能准许出现无限递归的

泛泛之交 2017-09-20 5 楼

我觉得可能取决你的堆栈大小

我知道 matlab 最大递归好像是500 很多语言都有最大递归次数限制

php 的正则也有递归次数 好像xdebug也有
你可以在php.ini里搜索 recursion 看看

归属感 2017-07-03 4 楼

递归层数应该是没有限制的——严格来讲是对于递归层数以及里面所需要的变量空间总和来限制的。

灵芸 2017-05-24 3 楼

请参看:
http://php.net/manual/zh/functions.user-defined.php
手册中提到

在 PHP 中可以调用递归函数。但是要避免递归函数/方法调用超过 100-200 层,因为可能会破坏堆栈从而使当前脚本终止。

我觉得, 你如你觉得递归可能会被调用很多层的话, 那么一定要避免过多层的递归调用.

夜无邪 2017-03-05 2 楼

我觉得是没有限制的,不过貌似安装了Xdebug扩展后会默认限制最多100层吧

虐人心 2017-02-18 1 楼

首先,递归的最关键的地方就是数据的保存,即入栈与出栈
每次向下递归都要对本次数据进行保存,即压栈
所以我个人认为和堆栈的大小有关的。

用VS2010测试,最后的出错提示是:test_Common.exe 中的 0x772115de 处有未经处理的异常: 0xC00000FD: Stack overflow
栈溢出,验证了我的想法

对于PHP的话,我想和服务器的系统本身设置有关?