Назад к вопросам
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$ Высокая
Использование памяти Высокое из-за глубины рекурсии Низкое
Сложность Легко понять определение Требует понимания цикла и переменных