Назад к вопросам
Junior
89
questionbank
Как реализовать алгоритм вычисления чисел Фибоначчи с использованием рекурсии или итерации?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
<?php
// Рекурсивный метод
function fibonacciRecursive(int $n): int
{
if ($n <= 1) {
return $n;
}
return fibonacciRecursive($n - 1) + fibonacciRecursive($n - 2);
}
// Итеративный метод
function fibonacciIterative(int $n): int
{
if ($n <= 1) {
return $n;
}
$a = 0;
$b = 1;
for ($i = 2; $i <= $n; $i++) {
$temp = $a + $b;
$a = $b;
$b = $temp;
}
return $b;
}
?>
Рекурсивный метод:
- Прост в реализации, прямо отражает математическое определение.
- Может быть неэффективным из-за повторяющихся вычислений одного и того же числа (проблема "겹침 문제", overlapping subproblems).
- Может привести к переполнению стека при больших $n$.
Итеративный метод:
- Более производителен и эффективен по памяти, так как не использует стек вызовов рекурсии.
- Избегает повторных вычислений.
- Требует хранения только двух предыдущих чисел последовательности.
| Особенность | Рекурсивная реализация | Итеративная реализация |
|---|---|---|
| Читаемость | Потенциально выше для определения | Потенциально ниже |
| Производительность | Низкая для больших $n$ | Высокая |
| Использование памяти | Высокое из-за глубины рекурсии | Низкое |
| Сложность | Легко понять определение | Требует понимания цикла и переменных |