Различные методы генерации чисел Фибоначчи в Python

Вот программа на Python, которая печатает числа Фибоначчи:

def fibonacci(n):
    fib_seq = [0, 1]  # Initialize the Fibonacci sequence with the first two numbers
    while len(fib_seq) < n:
        next_num = fib_seq[-1] + fib_seq[-2]  # Calculate the next number in the sequence
        fib_seq.append(next_num)  # Add the next number to the sequence
    return fib_seq
# Example usage
n = 10
fibonacci_sequence = fibonacci(n)
print(fibonacci_sequence)

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

Теперь давайте рассмотрим различные методы генерации чисел Фибоначчи:

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

def fibonacci_iterative(n):
    fib_seq = [0, 1]
    while len(fib_seq) < n:
        next_num = fib_seq[-1] + fib_seq[-2]
        fib_seq.append(next_num)
    return fib_seq

Метод 2: рекурсивный подход
Этот метод использует рекурсию для генерации чисел Фибоначчи. Он имеет более высокую временную сложность по сравнению с итеративным подходом.

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

Метод 3: подход динамического программирования
Этот метод оптимизирует рекурсивный подход с использованием динамического программирования. Он позволяет избежать избыточных вычислений, сохраняя ранее вычисленные числа Фибоначчи.

def fibonacci_dynamic(n):
    fib_seq = [0, 1]
    if n <= 2:
        return fib_seq[:n]
    else:
        for i in range(2, n):
            next_num = fib_seq[-1] + fib_seq[-2]
            fib_seq.append(next_num)
        return fib_seq

Метод 4: подход с использованием функции-генератора.
Этот метод использует функцию-генератор для ленивой генерации чисел Фибоначчи на лету, что позволяет сэкономить память для больших последовательностей.

def fibonacci_generator(n):
    a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a + b
# Example usage
n = 10
fibonacci_sequence = list(fibonacci_generator(n))
print(fibonacci_sequence)

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