Recursividade

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;

      }
    
    }

Ola,

Eh isso que voce quer fazer?

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;
	}
}

Um Abraco.

Mais nesse caso não seria recursividade certo??
gostaria chamando o metodo recursivo

Olha tentei uma outra maneira mais no caso ainda tah dando errado alguem poderia me ajudar??
desde ja agradeço;


Main vet=new Main();
        int[] veto = {1,5,3,2,4};
        int tamanho=veto.length;
        int res=0;
       vet.vetor(veto, tamanho,res);
       
    }
   
      public int vetor(int veto[], int tamanho,int res){
         System.out.println(res);
        int i=0;

        if (veto[i] < veto[i+1]){
            res=veto[i];
            return vetor(veto, ++i,res);
        }
            else if(veto[i]>veto[i+1]){
                 res = veto[i+1];
                return vetor (veto,i++,res);

            }
            else if (tamanho==veto.length){
                return res;
        
        }   
        return res;

      }

    }

Isso deve funcionar:

public static void main(String[] args) {
    int[] vetor = { 1, 5, 3, 2, 4 };
    int menorValor = vetor(vetor, 0, Integer.MAX_VALUE);
    System.out.println(menorValor);
}

public static int vetor(int vetor[], int posicao, int menorValor) {
    if (vetor.length == posicao) return menorValor;
    int valor = vetor[posicao];
    if (valor < menorValor) {
        menorValor = valor;
    }
    return vetor(vetor, posicao + 1, menorValor);
}

O que seria esse Max_VALUE

O Max_Value, serve para retornar o maior número do tipo inteiro.

Era isso que você queria saber?

Falow…

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

Respondendo a sua pergunta inicial.

[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).

Só mais uma coisinha…

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].