递归调用自定义函数出现内存使用的问题

cidao1971 2010-07-20 09:31:28
我现在学自定义函数,按照书中介绍的实践函数的递归调用,脚本如下:


function step_fun($value)
{
for($i = 0; $i < 8; $i++)
{
$value += $value;

if($i == 3)
{
return $value;
}
else
{
step_fun($value);
}
}
}

echo '<br />'.step_fun(1);

运行后出现下面的提示信息,大致意思是内在的使用范围超出,但不知是什么原因,请知道的高手,告诉一下,谢谢。
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 261900 bytes)
...全文
67 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cidao1971 2010-07-24
谢谢各位。
回复
LuciferStar 2010-07-20
PHP尽量不要尝试递归。效率很低。
回复
blue44sky 2010-07-20
无限死循环呀,
回复
cheng20100915 2010-07-20
[Quote=引用 5 楼 chinajoy2012 的回复:]
从代码看递归终止条件是判断i的值
而i是一个局部变量,所以递归是不可能终止的
[/Quote]
说的对,应该把变量i声明为全局变量,
改法:global $i=0;
for(;$i<8;$i++){
....
}
其他的不变
回复
chinajoy2012 2010-07-20
从代码看递归终止条件是判断i的值
而i是一个局部变量,所以递归是不可能终止的
回复
chinajoy2012 2010-07-20
没有递归终止条件吧~
回复
amani11 2010-07-20
一直在递归 每一次都是$i=0 step_fun($value);
回复
myhope88 2010-07-20
你不应该在函数中再加循环了
回复
myhope88 2010-07-20
这个应该是递归逻辑写错了,导致一直调用函数了,没办法返回,所以会内在溢出了
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告