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。对你的调试会很有帮助
好的谢谢前辈的经验,我会继续努力的
推荐阅读
-
开启ubuntu下lamp的php错误提示
-
php include提示failed to open stream: Permission denied in错误
-
phpstorm中js和php代码混用有错误提示,但是其实没问题,怎么关闭呢?
-
php提示Failed to write session data错误的解决方法_php技巧
-
php运行提示:Fatal error Allowed memory size内存不足的解决方法_php技巧
-
PHP错误提示It is not safe to rely on the system……的解决方法
-
PHP常见错误提示含义解释(实用!值得收藏)
-
PHP中Restful api 错误提示返回值实现思路
-
PHP错误提示It is not safe to rely on the system……的解决方法
-
php运行提示Can't connect to MySQL server on 'localhost'的解决方法