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

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)
...全文
154 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
这个应该是递归逻辑写错了,导致一直调用函数了,没办法返回,所以会内在溢出了

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧