Sequencia Fibonacci em Java Duvida[Resolvido]

Eu não entendi a logica, tipo quando i = 3, n = 3, dai 3 -1 = 2, 3-2 = 1, então n = 3, mas n tem 3 na sequencia de Fibonacci, então pensei tem fibo(n-1) ele deve alterar o resultado de n na próxima subtração, ficando :
fibo(3-1) = 2,
n seria 2 agora,
fibo (2-2) = 0, n = 2 -0, n = 2, 2 representa o terceiro numero na sequencia de Fibonacci.
beleza deu certo
Mas e quando n for 4? vai ficar
fibo(4-1) = 3;
n vai ser 3
fibo(3-2) = 1,
n = 3 + 1, n = 4. mas não tem 4 na sequencia de fibonacci;o quarto numero da sequencia é 3!!!
Alguém me explica ?

Na verdade é assim:
fibo(4-1) = fibo(3-1) + fibo(3-2)

Pode explicar melhor ? tipo n recebe 4 depois etc…

Proxima vez, posta o seu código aqui no fórum, seleciona ele e clica no botão </> pois é muito ruim ler código em imagens, sem contar que não dá pra copiar.

Se código está assim:

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

Talvez, para fazer um teste de mesa, seja melhor representar assim:

int fibo(int n) {
    if (n < 2) {
        return n;
    }
    int a = fibo(n - 1);
    int b = fibo(n - 2)
    int resultado = a + b;
    return resultado;
}

Fazendo um teste de mesa com n = 4 temos:

fibo(4):
    a = fibo(4 - 1)
        fibo(3):
            a = fibo(3 - 1)
                fibo(2) 
                    a = fibo(2 - 1)
                        fibo(1) = 1
                    a = 1
                    b = fibo(2 - 2)
                        fibo(0) = 0
                    b = 0
                    resultado = a + b
                    resultado = 1 + 0
                    resultado = 1
                fibo(2) = 1
            a = 1
            b = fibo(3 - 2)
                fibo(1) = 1
            b = 1
            resultado = a + b
            resultado = 1 + 1
            resultado = 2
        fibo(3) = 2
    a = 2
    b = fibo(4 - 2)
        fibo(2):
            a = fibo(2 - 1)
                fibo(1) = 1
            a = 1
            b = fibo(2 - 2)
                fibo(0) = 0
            b = 0
            resultado = a + b
            resultado = 1 + 0
            resultado = 1
        fibo(2) = 1
    b = 1
    resultado = a + b
    resultado = 2 + 1
    resultado = 3
fibo(4) = 3
2 curtidas

Só lembrei da hora em que tem que debugar um código pra achar onde a soma/operação não acontece como esperado.
Estes dias me enrolei com um colega pra debugar o código dele.
Ele percorria a uma lista do inicio e os removia de forma aleatória.
Eu resolvi com remove if, mas estava querendo saber o porque do erro.
Resumo: tinha que sincronizar dois fors, para remover de tráz pra frente.
Estes testes de mesa são bem legais, não sabia que se chamavam assim:

1 curtida

E ai, @Bruno_Daniel2 , Blz.:

Quem resolveu seu problema foi o @staroski, por favor, desmarque a solução e passe pra quem solucionou.
Eu não abordei NADA sobre Fibonacci, apenas sobre o teste de mesa (eu não sabia que se chamava assim, foi isso que eu disse).

Té+

pensei que podia marcar em mais de um

1 curtida