Fibonacci recursivo

Implementação de uma função recursiva para determinar os termos da sequência de Fibonacci. O código, em C++, apresenta duas funções: uma utilizando recursividade e outra sem.

No caso da função recursiva, veja que ela recebe 2 parâmetros a mais do que a função sem utilizar recursividade. Isso porque é preciso informar quais foram os dois últimos valores da sequência para poder gerar o novo valor através da chamada da função. Veja também que esses parâmetros possuem um valor padrão (valor 1 para ambos) e por isso, quando a função é inicialmente chamada (linha 29 do código), não é preciso fornecer valor algum.

#include <iostream>

using namespace std;

//Parâmetros: número de termos, último número e penúltimo número
void fibonacciRecursivo(int limite, int ult = 1, int pen = 1) {
    if (limite > 0) {
        int prox = ult + pen;
        cout << prox << " ";
        fibonacciRecursivo(limite-1, pen, prox);
    }
}

void fibonacciNaoRecursivo(int limite) {
    int ult = 1, pen = 1, prox;

    while (limite > 0) {
        prox = ult + pen;
        ult = pen;
        pen = prox;
        limite--;
        cout << prox << " ";
    }
}

int main() {
    fibonacciNaoRecursivo(8);
    cout << endl;
    fibonacciRecursivo(8);

    return 0;
}

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.