1

プログラミングによるロジック実装のスターターなので、プロジェクトEuler Quesに対する私の正直な努力を見つけてください。解決するためにさまざまな試みを試みましたが、それを乗り越えることができませんでした:(

これから得られる合計は -257112です。シリーズでカウントする合計に+2を追加しましたa[1] = 2が、機能していません。現在、静的な値45を渡して$numいますが、正しい方法ではないと思います。質問のロジックで遅れている場所を教えてください.

フィボナッチ数列の新しい各項は、前の 2 つの項を追加することによって生成されます。1 と 2 から始めると、最初の 10 項は次のようになります。

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

値が 400 万を超えないフィボナッチ数列の項を考慮して、偶数値の項の合計を求めます。

これは私が試したコードです -->

$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;

編集- $num が静的にならないように何かを探していますが、余分なゼロを追加して 400 万にするのはエラーでした (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 < $stop){
    $f2=$f0+$f1;
    $temp[] = $f2;
    $f0=$f1;
    $f1=$f2;
    $n++;
}

var_dump($temp);
?>

ここで同じ例を確認できます

于 2013-01-28T06:32:36.257 に答える
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 に答える
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 に答える