- 反復を使用した方法: フィボナッチ数列を生成する一つの方法は、反復を使って数列を計算することです。以下はその例です。
function fibonacci($n) {
$fib = [0, 1]; // 最初の2つの数
for ($i = 2; $i < $n; $i++) {
$fib[$i] = $fib[$i - 1] + $fib[$i - 2];
}
return $fib;
}
$length = 10; // 生成する数列の長さ
$result = fibonacci($length);
echo implode(', ', $result); // 結果をカンマで区切って表示
- 再帰を使用した方法: フィボナッチ数列を再帰的に生成する別の方法もあります。以下はその例です。
function fibonacci($n) {
if ($n <= 1) {
return $n;
}
return fibonacci($n - 1) + fibonacci($n - 2);
}
$length = 10; // 生成する数列の長さ
$result = [];
for ($i = 0; $i < $length; $i++) {
$result[] = fibonacci($i);
}
echo implode(', ', $result); // 結果をカンマで区切って表示
- メモ化を使用した効率化: 再帰を使用した方法は、計算量が指数的に増加するため、大きな数列を生成する場合には効率的ではありません。そこで、メモ化と呼ばれるテクニックを使って計算を効率化することができます。以下はその例です。
function fibonacci($n, &$memo = []) {
if (isset($memo[$n])) {
return $memo[$n];
}
if ($n <= 1) {
return $n;
}
$memo[$n] = fibonacci($n - 1, $memo) + fibonacci($n - 2, $memo);
return $memo[$n];
}
$length = 10; // 生成する数列の長さ
$result = [];
for ($i = 0; $i < $length; $i++) {
$result[] = fibonacci($i);
}
echo implode(', ', $result); // 結果をカンマで区切って表示
これらの方法を使用すると、PHPでフィボナッチ数列を生成することができます。反復を使用する方法や再帰を使用する方法、さらに効率化のためのメモ化を使用する方法があります。どの方法を選ぶかは、生成する数列の長さやパフォーマンスの要件によって異なります。