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
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:
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