Gostaria de saber se alguem pode me explicar o que acontece com esse código:
CLASSE MODELO:
[code]public class rec {
private int a;
private int b;
public void rec(int a, int b) {
this.recAux(a, b);
}
public int recAux(int a, int b) {
if (a == 0) {
return b;
} else {
a--;
b++;
b++;
this.recAux(a, b);
}
return b;
}
}[/code]
CLASSE MAIN:
[code]public class main {
public static void main(String[] args) {
rec r = new rec();
int i =r.recAux(5, 0);
System.out.println(i);
}
}[/code]
O código deve pegar o valor de a e duplicá-lo em b.
é um exercício sobre Máquinas de dois registradores…
Se eu fizer o método recAux como void e dentro do if mandar dar um Println no B, funciona beleza…
Do jeito que está aí, depois que ele entra no bloco do if e executa o return b, ele pula para a chamada do método recAux e continua executando até o a assumir zero novamente, aí ele pára…
alguém pode me explicar por que isso acontece???