Последовательность Фибоначчи в C++: итерационные, рекурсивные методы и методы мемоизации

Вот объяснение последовательности Фибоначчи на C++, а также несколько методов ее создания:

Метод 1: итеративный подход

#include <iostream>
int fibonacci(int n) {
    if (n <= 1)
        return n;
    int prev = 0;
    int current = 1;
    for (int i = 2; i <= n; i++) {
        int temp = current;
        current = prev + current;
        prev = temp;
    }
    return current;
}
int main() {
    int n = 10; // Change this value to generate Fibonacci sequence up to a different number
    for (int i = 0; i <= n; i++) {
        std::cout << fibonacci(i) << " ";
    }
    return 0;
}

Метод 2: рекурсивный подход

#include <iostream>
int fibonacci(int n) {
    if (n <= 1)
        return n;
    return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
    int n = 10; // Change this value to generate Fibonacci sequence up to a different number
    for (int i = 0; i <= n; i++) {
        std::cout << fibonacci(i) << " ";
    }
    return 0;
}

Метод 3: метод мемоизации (динамическое программирование)

#include <iostream>
#include <vector>
std::vector<int> memo;
int fibonacci(int n) {
    if (n <= 1)
        return n;
    if (memo[n] != -1)
        return memo[n];
    memo[n] = fibonacci(n - 1) + fibonacci(n - 2);
    return memo[n];
}
int main() {
    int n = 10; // Change this value to generate Fibonacci sequence up to a different number
    memo.resize(n + 1, -1);
    for (int i = 0; i <= n; i++) {
        std::cout << fibonacci(i) << " ";
    }
    return 0;
}

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