由于php中的逻辑实现错误,Fibonacci系列无法正常工作

时间:2013-01-28 06:26:58

标签: php arrays for-loop fibonacci

通过编程实现逻辑实现的初学者所以请找到我对项目Euler Ques的诚实努力,虽然我尝试了各种尝试解决但无法通过它:(

我从中得到的结果是 - 257112。我在总和中添加了+2来计算系列中的a[1] = 2,但它不起作用,我目前正在为45传递静态值$num,但我认为它不是正确的方法,让我知道我在这个问题的逻辑上滞后。

  

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

     

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

     

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

这是我试过的代码 - >

$a = array();
$a[0] = 1; $a[1] = 2; $num = 45; $i= 0; $sum = 0; $stop = $num -2;
    for($i; $i < $stop ; $i++ ) {
    $a[$i+2] = $a[$i+1] + $a[$i];

            if( $a[$i+2]%2 == 0 && $a[$i+2] <= 400000 )
            {
            $sum += $a[$i+2]; 
            }

    }

echo "<pre>";
print_r($a);
echo "<br>"."Sum is : ".$sum;

编辑 - 添加额外的零以使其达到400万是一个错误,虽然我正在寻找$ num的东西不是静态的(因为45我刚才随机提到,虽然它的工作但它不是一个干净的解决方案)

5 个答案:

答案 0 :(得分:4)

简单,没有阵列,快速。你只是在寻找总和,没有别的:

$a=1;$b=2;$sum=2;
while($b<4000000){
    $c=$b+$a;
    if($c%2==0)
        $sum+=$c;
    $a=$b;
    $b=$c;
}
echo $sum;

如果计算4,000,000,那么它将是$b<=4000000

答案 1 :(得分:1)

<?php

$f0=0;/* declaring variables */
$f1=1;
$f2=0;

$n=0; /* the series range */

while($n<20)
{
 $f2=$f0+$f1;
 echo $f2."<br>";
 $f0=$f1;
 $f1=$f2;
 $n++;
}
?>

答案 2 :(得分:1)

<?php

$f0=0;/* declaring variables */
$f1=1;
$f2=0;

$n=0; /* the series range */

while($n < $stop){
    $f2=$f0+$f1;
    $temp[] = $f2;
    $f0=$f1;
    $f1=$f2;
    $n++;
}

var_dump($temp);
?>

您可以查看相同的示例here

答案 3 :(得分:0)

这很简单:

$prev = 0;
$curr = 1;
$next = 1;
for ($i=0; $i <= 10; $i++) {
    $prev = $next;
    $curr = $i;
    $next = $prev + $curr;
    echo $next.'<br/>';
}

答案 4 :(得分:0)

Try this:

function fibonacci_series($n) {
 $f1 = -1;
 $f2 = 1;

 for ($i = 1; $i <= $n; $i++) {
   $f = $f1 + $f2;
   $f1 = $f2;
   $f2 = $f;
   echo "$f<br />"; 
 }
}

echo fibonacci_series(5);