PHP 斐波那契数列数列实现
<?php
// 递归
function fff($n)
{
$fbnq = [];
switch ($n) {
case 1:
$fbnq = [1];
break;
case 2:
$fbnq = [1, 1];
break;
default:
if ($n < 0) {
$fbnq = [0];
} else {
$fbnq = fff($n - 1);
array_push($fbnq, end($fbnq) + end(fff($n - 2)));
}
}
return $fbnq;
}
// 非递归
function ffff($n)
{
if ($n < 1) {
return 0;
}
for ($i = 1; $i <= $n; $i++) {
switch ($i) {
case 1:
case 2:
echo 1;
break;
default:
$n1 = $n2 ?: 1;
$n2 = $n3 ?: 1;
$n3 = $n1 + $n2;
echo $n3;
}
echo ' ,';
}
}
var_export(fff(9));
echo "\r\n";
var_export(ffff(9));
补充
<?php
function fib($n)
{
$cur = 1;
$prev = 0;
for ($i = 0; $i < $n; $i++) {
yield $cur;
$temp = $cur;
$cur = $prev + $cur;
$prev = $temp;
}
}
$fibs = fib(9);
foreach ($fibs as $fib) {
echo " " . $fib;
}
// prints: 1 1 2 3 5 8 13 21 34