php运行无结果,不提示错误
0) {$max=$arr[$left];} else $max=0; } else { $center=round(($left+$right)/2); $leftmax=DC_max($arr,$left,$center); $rightmax=DC_max($arr,$center+1,$right); for ($i=$center;$i>=$left;$i--){ $ls+=$arr[$i]; if ($ls>$l) $l=$ls; } for ($j=$center+1;$j$r) $r=$rs; } $max=$l+$r; if ($leftmax>$max) $max=$leftmax; if ($rightmax>$max) $max=$rightmax; } return $max;}$arr=array("-2","11","-4","13","-5","-2");$starttime2=microtime(true);echo "采用分治算法时最大子段和为".DC_max($arr,0,6)."";$endtime2=microtime(true);$total2=$endtime2-$starttime2;echo "所用时间为".$total2."秒";?>
回复讨论(解决方案)
打开 php 的错误显示功能,你就可以看到出现死循环了(内存耗尽)
打开 php 的错误显示功能,你就可以看到出现死循环了(内存耗尽)
求问大神,我在文件头部加上
ini_set("display_errors", "On");error_reporting(E_ALL | E_STRICT);
可是结果还是一样没有提示。求问大神哪里出现死循环了,小白看了一个晚上都没看出来
直接运行你的代码,会有错误
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 65488 bytes) in .....
显然是在递归中把内存耗尽了
在函数入口处观察传入参数
function DC_max($arr,$left,$right){
echo "$left,$right
";
会有
0,6
0,3
0,2
0,1
0,1
0,1
0,1
0,1
0,1
......
显然是死循环了
把 if ($left==$right){
改为 if ($left==$right || abs($left - $right) == 1){
会有
0,6
0,3
0,2
0,1
2,2
3,3
4,6
4,5
6,6
Notice: Undefined offset: 6 in
死循环消失了,但下标越界了
加上 error_reporting(E_ALL ^ E_NOTICE);
得
0,6
0,3
0,2
0,1
2,2
3,3
4,6
4,5
6,6
采用分治算法时最大子段和为20
所用时间为0秒
显然代码是不健壮的,很难说在什么情况下会得不到正确的结果
直接运行你的代码,会有错误
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 65488 bytes) in .....
显然是在递归中把内存耗尽了
在函数入口处观察传入参数
function DC_max($arr,$left,$right){
echo "$left,$right
";
会有
0,6
0,3
0,2
0,1
0,1
0,1
0,1
0,1
0,1
......
显然是死循环了
把 if ($left==$right){
改为 if ($left==$right || abs($left - $right) == 1){
会有
0,6
0,3
0,2
0,1
2,2
3,3
4,6
4,5
6,6
Notice: Undefined offset: 6 in
死循环消失了,但下标越界了
加上 error_reporting(E_ALL ^ E_NOTICE);
得
0,6
0,3
0,2
0,1
2,2
3,3
4,6
4,5
6,6
采用分治算法时最大子段和为20
所用时间为0秒
显然代码是不健壮的,很难说在什么情况下会得不到正确的结果
大神你好,不知道为什么在用您这个办法改了之后我这边还是不行,不过经过您的提示我感觉好像是$center那里的取值出问题,所以我把round函数改成了下取整函数floor,这时候上面的边界不改也是可以运行的。谢谢大神的指导,小白刚刚自学什么都不懂,希望能以后多像大神们学习。
在各种关键位置echo,exit。对你的调试会很有帮助
在各种关键位置echo,exit。对你的调试会很有帮助
好的谢谢前辈的经验,我会继续努力的
上一篇: php如何生成持透明png的图片缩略图
下一篇: PHP程序猿必备的七种武器
推荐阅读
-
VMware虚拟机运行时提示"内部错误"的解决办法介绍
-
优酷客户端启动不了 优酷启动提示优酷客户端运行错误怎么回事?怎么解决?
-
优酷客户端提示:程序运行错误 是否重试的解决办法
-
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
-
Ubuntu 14.04 下开启PHP错误提示
-
Win10运行红色警戒提示不兼容的解决方法
-
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
-
php提示Failed to write session data错误的解决方法
-
php运行提示:Fatal error Allowed memory size内存不足的解决方法
-
php Notice: Undefined index 错误提示解决方法