| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/03/2010 19:26:21
|
Giovanni Biffi
HelloWorld
Membro desde: 07/03/2010 16:23:00
Mensagens: 10
Offline
|
Olá pessoal... sei que já existe muita informação neste fórum sobre Fibonacci, já achei o código que funciona corretamente, entretanto gostaria de saber porque o código abaixo NÃO funciona adequadamente.
o código imprime >>> 0 1 1 3 5 7 9 11 13 15
o que está errado...
O código abaixo trabalha perfeitamente e imprime >>> 0 1 1 2 3 5 8 13 21 34
Sei que estou comentendo um erro de lógica de programação mas eu não consigo ver
o problema do primeiro código! to cego! Me ajudem!
Obrigado!
|
Giovanni Biffi |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/03/2010 22:39:11
|
andeb
Thread.start()
Membro desde: 17/05/2009 21:01:04
Mensagens: 47
Localização: Blumenau
Offline
|
Não funcionou porque acho que você não entendeu o conceito de Fibonacci. A sequência de Fibonacci é composta pelo resultado anterior + o resultado anteanterior (inventei essa palavra agora...), ali você só tá fazendo - 1 e - 2. :p
Daria certo se você armazenasse isso em um array...
Fiz isso aqui sem usa recursão, vê se ajuda hehe
|
"it's not what you know, it's when you know it" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/03/2010 22:52:59
|
Tobarinha
HelloWorld
Membro desde: 13/05/2008 18:42:55
Mensagens: 10
Offline
|
Olá, meu primeiro post aqui no GUJ, sou iniciante em JAva tambem, mas tentarei ajudar.
É o seguinte: a grande diferença entre o seu código e o que funciona é que :
Um funciona e outro não rssss...
Brincadeiras a parte, o código que funciona é recursivo entao, vou postr o código que funciona apenas pra poder explicar melhor:
Quando ele chama o método calcular(x) com x = 3 por exemplo, a função calcular em seu retorno chama ela mesma (recursividade - leia sobre pilhas tambem)
O que acontece é o seguinte a primeira chamada pra
calcular (3) realiza duas chamadas no return
calcular(2) + Calcular(1)
Calcular(2) retorna duas chamadas no return
Calcular(1) + Calcular(0)
NEsse ponto a pilha se encerra pois não existem mais chamadas a métodos... então ela é resolvida do fim para o começo.
Agora vamos avaliar:
Calcular(0) = 0
Calcular(1) = 1
Calcular(2) = Calcular(0) + Calcular(1) = 1
CAlcular(3) = calcular(2) + Calcular(1) = 2
CAlcular(4) = calcular(3) + Calcular(2) = 3 ....
E assim até o infinito ...
NO saso do seu programa voce não usou pilha, voce fez um incremento simples e quase reproduziu uma P.A rs
Espero ter ajudado, qualquer coisa posta mais ai que agente se ajuda!!!
Valew e boa sorte!!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/03/2010 23:39:20
|
Giovanni Biffi
HelloWorld
Membro desde: 07/03/2010 16:23:00
Mensagens: 10
Offline
|
Tobarinha wrote:Olá, meu primeiro post aqui no GUJ, sou iniciante em JAva tambem, mas tentarei ajudar.
É o seguinte: a grande diferença entre o seu código e o que funciona é que :
Um funciona e outro não rssss...
Brincadeiras a parte, o código que funciona é recursivo entao, vou postr o código que funciona apenas pra poder explicar melhor:
Quando ele chama o método calcular(x) com x = 3 por exemplo, a função calcular em seu retorno chama ela mesma (recursividade - leia sobre pilhas tambem)
O que acontece é o seguinte a primeira chamada pra
calcular (3) realiza duas chamadas no return
calcular(2) + Calcular(1)
Calcular(2) retorna duas chamadas no return
Calcular(1) + Calcular(0)
NEsse ponto a pilha se encerra pois não existem mais chamadas a métodos... então ela é resolvida do fim para o começo.
Agora vamos avaliar:
Calcular(0) = 0
Calcular(1) = 1
Calcular(2) = Calcular(0) + Calcular(1) = 1
CAlcular(3) = calcular(2) + Calcular(1) = 2
CAlcular(4) = calcular(3) + Calcular(2) = 3 ....
E assim até o infinito ...
NO saso do seu programa voce não usou pilha, voce fez um incremento simples e quase reproduziu uma P.A rs
Espero ter ajudado, qualquer coisa posta mais ai que agente se ajuda!!!
Valew e boa sorte!!!
O que é P.A. ??
|
Giovanni Biffi |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2010 00:52:21
|
ellison'
Debugger
![[Avatar]](/images/avatar/3e1d9bee7fa8982cbd0dd0c0aa5ce905.jpg)
Membro desde: 06/06/2008 11:21:28
Mensagens: 53
Localização: Rio de Janeiro
Offline
|
Opa meu camarada.
Devido a sua dúvida com o fibonacci eu implemente esse algoritmo aqui sem utilizar recursividade. Fica mais fácil entender como funciona:
Espero ter ajudado. Abraço.
Giovanni Biffi wrote: O que é P.A. ??
Progressão Aritmética = )
Você define uma sequencia (Ex.: 1, 2, 3, 4, 5) P.A de Razão 1. Ou seja, você define um intervalo e vai incrementando ele.
Se fosse uma P.A de razão 3 o Exemplo seria: 1, 4, 7, 10, 13 ... etc
|
Ellison Alves de Souza |
|
|
 |
|
|