来自Project Euler和PHP的Fibonacci问题#2

时间:2011-06-09 09:34:53

标签: php fibonacci

问题是这样的:

  

Fibonacci序列中的每个新术语都是通过添加前两个术语生成的。通过>从1和2开始,前10个术语将是:

     

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

     

通过考虑Fibonacci序列中的值不超过四百万的项,>找到偶数项的总和。

这就是我在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);
?>

我的代码没有运行......任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

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

此外,当您遇到问题时,让其他人知道它是什么类型的问题是件好事。像错误信息或类似的东西......

如果有任何机会,则没有errors reported, try to turn them on

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

答案 1 :(得分:1)

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

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

您可以在外面使用它。