Как получить числа Фибоначчи
Короткий ответ
Каждое число — сумма двух предыдущих:
<?php
$numbers = [];
[$a, $b] = [0, 1];
for ($i = 0; $i < 10; $i++) {
$numbers[] = $a;
[$a, $b] = [$b, $a + $b];
}
echo implode(', ', $numbers);Результат:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34Генератор
Генератор выдаёт числа по одному и не хранит весь список:
<?php
function fibonacci(): Generator
{
[$a, $b] = [0, 1];
while (true) {
yield $a;
[$a, $b] = [$b, $a + $b];
}
}
foreach (fibonacci() as $number) {
if ($number > 100) {
break;
}
echo $number, ' ';
}Результат:
0 1 1 2 3 5 8 13 21 34 55 89Функции из этого ответа
- Generator — Объект, который возвращает функция с `yield`.
- iterator_to_array — Превращает итератор или генератор в массив.
- array_sum — Возвращает сумму значений массива.