2
respostas

Resposta para sequência de Fibonacci não funcionou

Tentei realizar essa tarefa com recursão, mas não funcionou. Fiz o meu como está abaixo:

#include <stdio.h>

int calculafibonacci(int n){
    if(n==1) return 1;
    if(n==2) return 1;

    return (n-1) + (n-2);
}

int main(){
    printf("SEQUENCIA DE FIBONACCI\n");

    int valor;

    printf("Informe um numero inteiro ");
    scanf("%d", &valor);

    int retorno = calculafibonacci(valor);

    printf("O valor eh %d", retorno);
}

Na resposta do instrutor seria assim:

int calculafibonacci(int n){
    if(n==1) return 1;
    if(n==2) return 1;

    return calculafibonacci(n-1) + calculafibonacci(n-2);
}

Mas não funcionou, retorna o mesmo valor que solicitei para a sequencia.

2 respostas

Oi Camila,

Executei o programa substituindo pela função calculafibonaccicomo na resposta do instrutor e funciona normalmente.

O seu programa não está usando recursão. Quando a função calculafibonacci no seu programa é chamada para um número diferente de 1 ou 2, ela simplesmente retorna:

(n-1) + (n-2) = (2n - 3)

A sequência de fibonacci é definida recursivamente por:

F(n) = F(n-1) + F(n-2)

No seu programa esse F(n) é a função calculafibonacci, então você tem que fazer como no exemplo do professor, chamando a função calculafibonacci para n-1 e para n-2.

Tenta desse jeito.

#include <stdio.h>

int calculafibonacci(int n){
    if(n==0) return 0;
    if(n==1) return 1;

    return calculafibonacci(n-1) + calculafibonacci(n-2);
}

int main(){
    printf("SEQUENCIA DE FIBONACCI\n");

    int valor;

    printf("Informe um numero inteiro ");
    scanf("%d", &valor);

    int retorno = calculafibonacci(valor);

    printf("O valor eh %d\n", retorno);
}