【问题标题】:Fibonacci Problem #2 from Project Euler with PHP来自 Project Euler 的 PHP 斐波那契问题 #2
【发布时间】:2011-06-09 09:34:52
【问题描述】:

问题是这样的:

斐波那契数列中的每个新项都是通过添加前两项来生成的。通过 >从 1 和 2 开始,前 10 个术语将是:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

通过考虑斐波那契数列中值不超过四百万的项,>求偶数项的总和。

这是我用 PHP 写的

<?php
function fibo($first, $second, $limit){
  $next = $first + $second;
  if ($next % 2 ==0) {
    $array[]= "$next";
  }

  do 
  { 
    fibo($second,$next, $limit);
  } while ($next < $limit);

  $sum=array_sum($array[]);
  echo "$sum";
}
fibo(1,2,4000000);
?>

我的代码没有运行……谁能帮忙?

【问题讨论】:

  • 您的代码是否产生错误消息或错误输出或什么都没有?请说明不运行的含义。
  • 看在上帝的份上,请格式化您的代码以便我们阅读。

标签: php fibonacci


【解决方案1】:

尝试将$sum=array_sum($array[]); 更改为$sum=array_sum($array);,看看会发生什么...

另外,当您遇到问题时,最好让其他人知道这是什么类型的问题。像错误消息或类似的东西......

如果万一没有errors reported, try to turn them on

编辑:
我记得在递归解决一些欧拉问题时,我碰巧遇到了页面崩溃的问题。 This may happen due to some recursion limitations。我相信这与您的问题相似。

【讨论】:

  • 谢谢安德烈,您可能会遇到一些问题,因为该代码确实会在 Chrome 上导致服务器错误消息显示“HTTP 错误 500(内部服务器错误):服务器尝试完成请求。”不过 Firefox 上没有错误消息。我将尝试打开 error_reporting 并查看它的内容。对不起格式化!我的错!
【解决方案2】:

这是一个简单的范围问题。你在函数中定义$array,你不能在外面使用它。尝试使用全局数组:

function fibo($first, $second, $limit) {
  //...
  $GLOBALS[array[]] = $next; 
}

你可以在外面使用它。

【讨论】:

  • 我不确定我是否理解...你的意思是我不能在其函数之外引用 $array 吗?但它从未在其功能之外被提及?
  • @nubicurio 是的,就像第 13 行一样:$sum=array_sum($array[]);
猜你喜欢
  • 2010-11-26
  • 2010-11-24
  • 2013-02-24
  • 1970-01-01
  • 2013-03-14
  • 2011-05-19
  • 2011-09-27
  • 2017-11-18
  • 2012-12-29
相关资源
最近更新 更多