1

通过编程从逻辑实现开始,所以请找到我为 Euler Ques 项目所做的诚实努力,尽管我尝试了各种尝试来解决但无法通过它:(

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

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

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

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

这是我试过的代码-->

$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,虽然它可以工作但它不是一个干净的解决方案)

4

5 回答 5

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

于 2013-01-28T06:35:56.047 回答
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++;
}
?>
于 2013-01-28T06:31:53.513 回答
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);
?>

您可以在此处查看相同的示例

于 2013-01-28T06:32:36.257 回答
0

这很简单:

$prev = 0;
$curr = 1;
$next = 1;
for ($i=0; $i <= 10; $i++) {
    $prev = $next;
    $curr = $i;
    $next = $prev + $curr;
    echo $next.'<br/>';
}
于 2013-10-11T20:24:09.870 回答
0

试试这个:

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);
于 2015-06-30T13:30:01.120 回答