Рекурсивная функция c ++ для вывода элементов дерева Фибоначчи - PullRequest
0 голосов
/ 25 ноября 2018

До сих пор я мог использовать рекурсию для распечатки последовательности Фибоначчи.Например, первые 6 терминов (включая 0-й термин) в последовательности:

6

13 8 5 3 2 1 1

, но я не уверен, как я должен использовать этораспечатать все дерево Фибоначчи.Когда программа вводит 6, она должна вывести:

6
13 8 5 3 2 1 1 1 2 1 1 3 2 1 1 1 5 3 2 1 1 1 2 1 1

, и мой код пока:

#include <iostream>
#include <math.h>
#include <vector>
#include <string>

using namespace std;

std::vector<int> list;

int fib(int num);

int main() {
    int input, depth = 0, leafs = 0, size = 0;

    cin >> input;
    int temp = input;

    while (temp >= 0) {
        cout << fib(temp) << " ";
        temp--;
    }


    return 0;
}

int fib(int n) {
    if (n <= 1) {
        return 1;
    } else {
        return fib(n-1) + fib(n-2);
    }
}

1 Ответ

0 голосов
/ 25 ноября 2018

Если вы хотите распечатать все, вам нужно также для всех функций, чтобы напечатать все:

int fib(int n) {
    if (n <= 1) {
        std::cout << 1 << " ";
        return 1;
    } else {
        int f1 = fib(n-1);
        int f2 = fib(n-2);
        std::cout << f1 + f2 << " ";
        return f1 + f2;
    }
}
...