Bom galera estou tentando fazer uma recursividade que eu insiro um vetor e ele me tras o menor valor do vetor , mais no caso ele não me tras esse valor que seria o numero 1 pq??
desde ja agradeço a tds…
public static void main(String[] args) {
System.out.print(valor);
Main vet=new Main();
int[] veto = {1,5,3,2,4};
int tamanho=veto.length;
int valor=0;
vet.vetor(veto, tamanho, valor);
}
public int vetor(int veto[], int tamanho, int valor){
int i=0;
if (veto[i] < valor){
return vetor(veto, ++i, valor);
} else if(tamanho == i) {
return valor;
}
return valor;
}
}
package br.com.algoritimos;
public class MenorValorVetor {
public static void main(String[] args) {
MenorValorVetor vet = new MenorValorVetor();
int[] vetor = { 1, 5, 3, 2, 4 };
int tamanho = vetor.length;
int v = vet.vetor(vetor, tamanho);
System.out.println(v);
}
public int vetor(int vetor[], int tamanho) {
int result = vetor[0];
for (int i = 0; i < tamanho; i++) {
if(vetor[i] < result){
result = vetor[i];
}else{
continue;
}
}
return result;
}
}
Reescrevendo o código do andeb utilizando genéricos, para que possa ser utilizado não apenas para valores inteiros, mas para qualquer tipo de objeto:
public class ComparadorGenerico< T extends Comparable >{
public T minimo( final T[] vetor ){
return minimo( vetor, 0, vetor[0] );
}//Fim do metodo.
private T minimo( final T[] vetor, final int posicao, T menorValor ){
menorValor = this.menor( vetor[ posicao ], menorValor );
return vetor.length - 1 == posicao ? menorValor : minimo( vetor, posicao + 1, menorValor );
}//Fim do metodo.
private T menor( final T valor1, final T valor2 ){
return valor1.compareTo( valor2 ) > 0 ? valor2 : valor1;
}//Fim do metodo.
}//Fim da classe
Alterei o nome do método vetor para minimo, e o sobrecarreguei, para que o chamador informe apenas o vetor.
Para testar a classe, pode utilizar essa aqui, onde informei Integer e String.
public class ComparadorTeste {
public static void main(String[] args) {
Integer[] numeros = { 1, 5, 3, 2, 4 };
String[] nomes = { "zeus", "joao", "maria", "alex" };
Comparable menorValorNumerico = new ComparadorGenerico< Integer >().minimo( numeros );
Comparable menorValorAlfabetico = new ComparadorGenerico< String >().minimo( nomes );
System.out.println( "Menor Valor Numerico: " + menorValorNumerico );
System.out.println( "Menor Valor Alfabetico: " + menorValorAlfabetico );
}//Fim do metodo main
}//Fim da classe
[quote=Villa]Bom galera estou tentando fazer uma recursividade que eu insiro um vetor e ele me tras o menor valor do vetor , mais no caso ele não me tras esse valor que seria o numero 1 pq??
desde ja agradeço a tds…
[/quote]
Por que não retornou o número 1 como sendo o menor valor?
O que é menor: 0 (zero) ou 1? Note que você informa logo de início que o valor menor é 0 (zero).
Recursividade é elegante e legal de criar. Mas ao invés de informar 5 valores para obter o menor, experimente 100.000, e veja o que acontece!!! Acho que com 10.000 já será suficiente para ver os estragos.
:twisted: Cuidado com [color=red]recursividade[/color].