Функция Фибоначчи Python: различные методы расчета чисел Фибоначчи

Вот пример функции Фибоначчи в Python:

def fibonacci(n):
    if n <= 0:
        return []
    elif n == 1:
        return [0]
    elif n == 2:
        return [0, 1]
    else:
        fib_list = [0, 1]
        while len(fib_list) < n:
            next_number = fib_list[-1] + fib_list[-2]
            fib_list.append(next_number)
        return fib_list

Эта функция принимает целое число nв качестве входных данных и возвращает список первых nчисел Фибоначчи. Он использует цикл для итеративной генерации последовательности Фибоначчи.

Альтернативные методы расчета чисел Фибоначчи включают использование рекурсии, мемоизации и возведения матрицы в степень. Вот пример рекурсивной функции Фибоначчи:

def fibonacci_recursive(n):
    if n <= 0:
        return []
    elif n == 1:
        return [0]
    elif n == 2:
        return [0, 1]
    else:
        fib_list = fibonacci_recursive(n - 1)
        fib_list.append(fib_list[-1] + fib_list[-2])
        return fib_list

В этой рекурсивной реализации функция вызывает саму себя для вычисления чисел Фибоначчи.

Другой подход — использовать мемоизацию, при которой сохраняются ранее вычисленные значения Фибоначчи, чтобы избежать избыточных вычислений. Вот пример использования мемоизации:

fib_cache = {}
def fibonacci_memo(n):
    if n <= 0:
        return []
    elif n == 1:
        return [0]
    elif n == 2:
        return [0, 1]
    elif n in fib_cache:
        return fib_cache[n]
    else:
        fib_list = fibonacci_memo(n - 1)
        next_number = fib_list[-1] + fib_list[-2]
        fib_list.append(next_number)
        fib_cache[n] = fib_list
        return fib_list

Наконец, возведение матрицы в степень — еще один эффективный метод вычисления чисел Фибоначчи в логарифмической временной сложности. Однако он включает в себя более сложные математические операции и его может быть не так просто реализовать.