Public static int[] lastTwo( int val )

1 resposta
shaq
Boas, tenho um método recursivo para fazer para a faculdade, já tenho o código e o método funciona para arrays ordenados, mas não para desordenados, eu a programar recusrsivo é sempre à "martelada" e depois vejo no debug o que está mal, mas com o windows7 dá um bug no eclipse e não consigo correr o debug, aqui vai o problema: public static int[] lastTwo( int val ) que retorna um array de dois inteiros contendo os dois algarismos de maior peso na base decimal do valor val. Caso o valor absoluto de |val| seja menor que 10 retorna null. o código que eu fiz:
package grupo1;

public class LastTwo {

	public static int[] lastTwo( int val ){
		int []a=new int[2];
		if(Math.abs(val) < 10)return null;
		if(val < 100){
			if(val%10 < val/10){
				a[0]=val%10;
				a[1]=val/10;
				return a;
			}else {
				a[1]=val%10;
				a[0]=val/10;
				return a;
			}	
		}
		if(val%10 > lastTwo(val/10)[0]){
			if(val%10 > lastTwo(val/10)[1]){
				a[1]=val%10;
				a[0]=lastTwo(val/10)[1];
				return a;
			}else{
				a[0]=val%10;
				return a;
			}
		}else
			return a;
	}
}

alguém me csg dar uma mãozinha?tks in advance ;)

1 Resposta

shaq

Já csg fazer o debug e encontrei o problema, mas não o csg resolver:

public static int[] lastTwo( int val ){ int []a=new int[2]; if(Math.abs(val) < 10)return null; if(val < 100){ if(val%10 < val/10){//quando retorna a os valores do array ficam a zero! a[0]=val%10; a[1]=val/10; return a; }else { a[1]=val%10; a[0]=val/10; return a; } } if(val%10 > lastTwo(val/10)[0]){ if(val%10 > lastTwo(val/10)[1]){ a[1]=val%10; a[0]=lastTwo(val/10)[1]; return a; }else{ a[0]=val%10; return a; } }else return a; }

Sugestões

Criado 15 de outubro de 2009
Ultima resposta 29 de out. de 2009
Respostas 1
Participantes 1