Pessoal é o seguinte me deparei com um novo problema
tem uma funcao que recebe alguns parametros e dentro dela eu chamo ela recursivamente incrementando dois parametros passado um int e o outro double só que ao final do processo as variaveis passada como parametro fica com o valor original delas Ex:
[color=green]
public void getMedia(NodoArvore x,int cont, double media)
{
if(x != null)
{
cont++;
media+= + x.chave;
getMedia(x.esq,cont,media);
getMedia(x.dir,cont,media);
}
}
chamo a funçao
int contador =0;
double contador = 0;
v.getMedia(v.raiz,contador,total);
[/color]
só que ao sai da função minha variavel contador = 0 e a total também. Tudo bem considero ser até certo isto pois os dois são tipos primitivos e não tipos de referências só que eu mudei o código para :shock: :
[color=green]
public void getMedia(NodoArvore x,Integer cont, Double media)
{
if(x != null)
{
cont=cont.intValue() + 1;
media= media.doubleValue() + x.chave;
getMedia(x.esq,cont,media);
getMedia(x.dir,cont,media);
}
}
chamo a funçao
Integer contador =0;
Double contador = 0.0;
v.getMedia(v.raiz,contador,total);
[/color]
Só que para a minha supresa também não funcionou ocorreu a mesma coisa do primeiro algoritimo. Gostaria de saber porque disto, será que o java ainda subentende que são tipos primitivos? :roll:
Para eu fazer o código funcionar tive quer fazer:
[color=green]
public void getMedia(NodoArvore x,double[] result)
{
if(x != null)
{
result[0]++;
result[1]+= x.chave;
getMedia(x.esq,result);
getMedia(x.dir,result);
}
}
chamo a funçao
double[] valor = new double[2];
v.getMedia(v.raiz,valor);
[/color]
Desde já grato. . .