[RESOLVIDO] Método recursivo para menor numero usando array list

7 respostas
N

Eu fiz um método iterativo usando estruturas de repetição,

Método Iterativo:

public static Integer buscaIterativa(ArrayList<Integer> vetorNumeros){ Integer menor = vetorNumeros.get(0); for (int i=0; i< vetorNumeros.size(); i++){ if(vetorNumeros.get(i) < menor) menor = vetorNumeros.get(i); } return menor; }

Eu preciso de ajuda para criar um método RECURSIVO que retorne o menor numero de um array de inteiros, alguns tópicos que eu encontrei no forum não me serviram, não consegui compreender. Agradeço desde já!

7 Respostas

E

Sabe como escrever esse método em “português estruturado” ?

K

não pode usar o Collections.sort() ?
se puder, é só pegar o primeiro objeto da lista.

N

Não consigo nem em portugues, tentei achar um parâmetro para chamar a função dentro dela mesmo, mas só me confunde mais,
Eu sei fazer esse método com o for, mas com recursividade não dá certo

O Collections.sort() não seria recursividade, não poderia

Eu tentei isso mas não mostra o menor;
public static Integer buscaRecursiva(ArrayList<Integer> vetorNumeros, int pos){
		Integer menor = vetorNumeros.get(0);
		if (pos == vetorNumeros.size())
			return menor;
		else if (vetorNumeros.get(pos) < menor)
			menor = buscaRecursiva(vetorNumeros,pos+=1);
		return menor;
		
	}
K

tá com cara de tarefa de casa :X

N

Não vejo sua cara, e nem quero kkk, só procuro ajuda;

Outro código que tentei mais da erro:

public static Integer buscaRecursiva(ArrayList<Integer> vetorNumeros, int pos){  
	     
		  
	    if (pos == 1){  
	      return vetorNumeros.get(0);  
	   } else {  
	        
	      int menor = buscaRecursiva(vetorNumeros, pos-1);  
	      if (menor > vetorNumeros.get(pos-1)){  
	         return menor;  
	      }else{  
	         return vetorNumeros.get(pos-1);   
	      }  
	      }  
	        
	}
N

Se alguém procura a resposta:

public static Integer buscaRecursiva(ArrayList<Integer> vetorNumeros, int pos){  
	     
		  
	    if (pos == 1){  
	      return vetorNumeros.get(0);  
	   } else {  
	        
	      int menor = buscaRecursiva(vetorNumeros, pos-1);  
	      if (menor < vetorNumeros.get(pos-1)){  
	         return menor;  
	      }else{  
	         return vetorNumeros.get(pos-1);   
	      }  
	      }  
	        
	}

Link: http://www.guj.com.br/java/280365-metodo-recursivo-para-encontrar-e-retornar-o-maior-elemento-de-um-array

K
public class Teste {

	static int menorNumero;
	
	public static void main(String[] args) {
		
		List<Integer> aux = new ArrayList<Integer>(0);
		aux.addAll(Arrays.asList(-8,23,1,4,2,-30,8,9,6,-15));
		
		ordenarRecursivo(aux,null);
		System.out.println(menorNumero);
		
		
	}

	private static void ordenarRecursivo(List<Integer> aux, Integer object) {
		if(object==null){
			menorNumero = aux.get(0);
		}
			for (Integer numero : aux) {
				if(numero<menorNumero) {
					menorNumero = numero;
					ordenarRecursivo(aux, menorNumero);
				}
			}
	}
	
}
Criado 22 de março de 2013
Ultima resposta 22 de mar. de 2013
Respostas 7
Participantes 3