Duvida simples

public int operacao(int n) {
int a, b, c, d;
c = 0;
b = 1;
a = 1;
while (a < n) {
d = b + c;
c = b;
b = d;
a = a + 1;
}
return b;
}

Se eu colocar 5 no lugar de n, o valor retornado será 8?Será que estou errado!

Crie uma classe e rode esse método. É mais rápido que esperar a resposta aqui.

Sim está o valor do b no return é 5.
Pois vc interage apenas até o a = 4, quando ele é 5 ele saí do while.
Faça o debug na mão mesmo, usando chinesinho.

obrigado! sou iniciante e aqui nesse computador não tem o programa adequado!

fui um teste veja só:

[code]
public class Teste {
public int operacao() {
int a, b, c, d;
c = 0;
b = 1;
a = 1;
while (a < 5) {
d = b + c;//1
c = b;//1
b = d;
a = a + 1;

	}
	return b;
}

public static void main(String[] args) {
	System.out.println(new Teste().operacao());
}

}[/code]

imprimiu 5

Aliás… Adorei a pergunta… :smiley:

Explicação simples, o a<n vai iterar até o valor menor que 5. Pois n = 5.

eu tentei fazer na caneta com o n = 9 e deu 32!!

axo q vc errou no calculo…para n=9, o resultado de b é 34…

  • a idéia é essa… ele roda até que a seja menor que 9.
    ou seja a ultima vez q ele entra no while é com a==8…
    vlw

Geralmente nesses while o pessoal começa com o a=0, que ai ele roda o laço n vezes, ao invez de n-1 vezes
:b