2017-11-28 7 views
-3

私はこれがおそらくPHP101のものだと知っていますが、私はここでPHP101をやっていますが、この問題をどのように進めるべきか分かりません。私はフィボナッチ配列を20箇所に生成する簡単なスクリプトを持っていますが、これらの結果をインデックス配列に戻し、その結果の平均を求めたいと思います。ここでwhileループから配列への出力?

コードです:

<?php 
    $num = 0; 
    $n1 = 0; 
    $n2 = 1; 
    echo "<h3>Fibonacci series for first 20 numbers: </h3>"; 
    echo "\n"; 
    echo $n1.' '.$n2.' '; 

    while ($num < 19){ 
     $n3 = $n2 + $n1; 
     echo $n3.' '; 
     $n1 = $n2; 
     $n2 = $n3; 
     $num = $num + 1; 
    }; 
?> 

私はちょうど私のための私の問題を解決するために人々を尋ねたが、私は、私は本当にこれで前進するかどうかはわかりませんPHPにfaaairly新たなんだことを考えると嫌い。

+0

質問わかりやすくするために、あなたの期待出力を明記してください。私はフィボナッチを見上げたが、他の人は気にしないかもしれない。 – mickmackusa

+0

「PHPで配列を作成する方法」を調べたところ、何も見つかりませんでしたか? – csmckelvey

答えて

2

Simpleコード:array_push()関数の

// ...previous code 

$result = array(); 
while ($num < 19) 
{ 
    $n3 = $n2 + $n1; 
    echo $n3.' '; 
    $n1 = $n2; 
    $n2 = $n3; 
    $num = $num + 1; 
    // push to array $result 
    $result[]= $n3; 
}; 

echo '<h4>Average : '. array_sum($result)/count($result) .'</h4>'; 
+0

'$ result'に0と1の初期値がありません。 – Progrock

0

使用は、アレイの端部に一つ以上の要素を挿入します。

<pre> 

<?php 

$num = 0; 
$n1 = 0; 
$n2 = 1; 
$arr=array(); 
echo "<h3>Fibonacci series for first 20 numbers: </h3>"; 
echo "\n"; 
echo $n1.' '.$n2.' '; 
array_push($arr, $n1); 
array_push($arr, $n2); 
while ($num < 18) 
{ 
    $n3 = $n2 + $n1; 
    array_push($arr, $n3); 
    echo $n3.' '; 
    $n1 = $n2; 
    $n2 = $n3; 
    $num = $num + 1; 

}; 
echo "<br>"; 

print_r($arr); 
$Average= array_sum($arr); 
$Average=(int)($Average/count($arr)); 
echo $Average; 

?> 

    </pre> 
+0

' $ arr'を見ましたか?それはいくつかの値が欠けているのではないですか? – Progrock

+0

フィボナッチのシーケンスは、0,1,1,1で始まると思います。そして、あなたは1,2を始めます。 – Progrock

+0

私は答えを –

1
<?php 
$length = 20; 
$fibs = [0, 1]; 
for($i=2; $i<$length; $i++) 
    $fibs[$i] = $fibs[$i-1] + $fibs[$i-2]; 

print implode(',', $fibs) . "\n"; 
printf(
    'The mean average of first %d fibonacci numbers is %f.', 
    $length, 
    array_sum($fibs)/$length 
); 

出力:

0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181 
The mean average of first 20 fibonacci numbers is 547.250000. 

さらに私たちは、空のステートメントにするループを減らすことができます。ここではフィボナッチ数列のための項目の配列を生成機能があります:

function fibonacci_sequence($length) 
{ 
    for(
     $fibs = [0, 1], $i = 2; 
     $i < $length; 
     $fibs[$i] = $fibs[$i-1] + $fibs[$i-2], $i++ 
    ); 

    return array_slice($fibs, 0, $length); 
} 
1

再帰は、この作業のために、おそらく過剰ですが、私はそれで遊びがあり、いずれも使用しない方法を書きたいと思いましたアレイ。

コード:(Demo

function fibonacci($iterations,$carry=1,$last=0){ 
    if(--$iterations>1){$carry+=fibonacci($iterations,$carry+$last,$carry);} // control iterations & recurse 
    return $carry;               // return the sum 
} 
$stop=20; 
echo fibonacci($stop)/$stop;             // call function 

出力:

547.25 
関連する問題