public class Numero {
public Numero(){
}
public void recursivo( Integer i ){
System.out.println("Antes: " + i );
if( i > 0){
i -= 1;
this.recursivo( i );
}
System.out.println("Depois: " + i );
}
public static void main(String[] args) {
Numero n = new Numero();
//Numero n1 = new Numero();
n.recursivo( 10 );
}
}
Esse código dá a seguinte saida:
Antes: 10
Antes: 9
Antes: 8
Antes: 7
Antes: 6
Antes: 5
Antes: 4
Antes: 3
Antes: 2
Antes: 1
Antes: 0
Depois: 0
Depois: 0
Depois: 1
Depois: 2
Depois: 3
Depois: 4
Depois: 5
Depois: 6
Depois: 7
Depois: 8
Depois: 9
public class Numero {
public int n = 10;
public Numero(){
}
public void recursivo( Numero i ){
System.out.println("Antes: " + i.n );
if( i.n > 0){
i.n -= 1;
this.recursivo( i );
}
System.out.println("Depois: " + i.n );
}
public static void main(String[] args) {
Numero n = new Numero();
Numero n1 = new Numero();
n.recursivo( n1 );
}
}
Esse diferentemente do acima dá essa saida:
Antes: 10
Antes: 9
Antes: 8
Antes: 7
Antes: 6
Antes: 5
Antes: 4
Antes: 3
Antes: 2
Antes: 1
Antes: 0
Depois: 0
Depois: 0
Depois: 0
Depois: 0
Depois: 0
Depois: 0
Depois: 0
Depois: 0
Depois: 0
Depois: 0
Depois: 0
Ou seja, a caracteristica de empilhamento da recursão não está ocorrendo, eu sei que isso ocorre pq eu estou passando um “ponteiro” no paramentro, mas, no 1º código tbm é passado um “ponteiro”.
No tbm que no 1º código eu passasse para o método recursivo o tipo básico int o resultado seria o mesmo, está parecendo que o Integer tenta igualar o comportamentodo int, estou errado?
Preciso muito que esse segundo código se comporte da mesma forma que o de cima.
Alguem ai sabe como? Ao menos se eu pudesse clonar o objeto para passa-lo no paramentro, seria um quebra galho, mas já ajudava.