Algoritimo recursivo!

12 respostas
IFMT

Eu preciso de uma função recursiva para calcular o maior e o menor elemento de um conjunto de elementos, dados em um array de inteiros?

alguem pode me ajudar???

12 Respostas

renanreismartins

eu transformaria esse array numa lista com a classe Arrays, dps utilizaria a classe Collection pra ordenar a lista e finalmente pegaria os valores do 1o e ultimo indice… assim teria o maior e menor valor… beeeeeeeeeeeeeeeem mais simples que montar uma funcao, ainda mais recursiva

abrasssssssssss

Tiago.Argolo

Esquece linguagem estruturada man! rsrs Procura conhecer e utilizar o máximo dos recursos da nossa querida linguagem Java.
Como citado acima seria utilizando o método sort(x).

Collections.sort(x);

Sendo x, sua lista contendo os números inteiros à serem ordenados.

Ou, se tu ainda utiliza Array

Arrays.sort(x)

Até mais!

thiagocg

Olá IFMT, além das formas citadas pelos colegas renanreismartins e Tiago.Argolo, caso seus “elementos” sejam objetos vc ainda pode trabalhar com comparator ou comparable.

[]'s

WendersonLP

Bem uma dica que eu dou para você é:
crie sua função recursiva e peça como parâmetros o array, que é de onde
você quer retirar o menor e maior elemento, e também o tamanho desse array.
Decremente o tamanho do array, depois verifique se o tamanho dele é igual a zero, caso
seja, retorne o valor do array tendo como índice o tamanho do array, caso não seja igual
a zero crie uma variável que receba o valor do array tendo como índice o tamanho do vetor,
crie outra variável que receberá a chamada do método recursivo. E por fim retorne o maior ou
menor elemento que encontra-se nas duas variáveis criadas.

Até mais…

evertonsilvagomesjav

thiagocg:
Olá IFMT, além das formas citadas pelos colegas renanreismartins e Tiago.Argolo, caso seus “elementos” sejam objetos vc ainda pode trabalhar com comparator ou comparable.

[]'s

Se sao numeros ou seja arrays de inteiros…pra que ele vai usar Comparator e Comparable sendo que Collections.sort e Arrays.sort ja vao ordenar de forma natural?

renamed

Ele quer algo recursivo, isso em java é bem complexo porque não existe ponteiro para tipos primitivos e vc nao pode retornar mais de um valor.
De qualquer forma, manda o código que você já fez pra gnt dar uma olhada.

Tiago.Argolo

Isto serviria?

int aux = 0;
		int[] dados = new int[10];


		for (int i = 0; i<10; i++)
			dados[i] = Integer.parseInt(JOptionPane.showInputDialog("Valor para posição " + i));

	    for (int i = 0; i<dados.length-1; i++)
	    {
	    	if (dados[i+1] < dados[i])
	    	{
	    		aux = dados[i+1];
	    		dados[i+1] = dados[i];
	    		dados[i] = aux;
	    	}
	    }

	    for (int x: dados)
	    	System.out.print (x + " ");
thiagocg

Olá evertonsilvagomesjava, como eu citei no meu post:

isso numa possibilidade de no futuro ele precisar trabalhar com objetos, de resto concordo plenamente com vc!

[]'s

WendersonLP

Rapaz, ele só está querendo duas funções recursivas, uma para retornar o maior valor e outra o menor de um array de inteiros.
Só isso.

public static int max(int[] vector, int size)
	{
		--size;
		if (size == 0)
		{
			return vector[size];
		}
		
		int i_value = vector[size];
		int i_resulted = max(vector, (size));
		
		return (i_value >  i_resulted) ? i_value : i_resulted;
	}
tauame

WendersonLP:
Rapaz, ele só está querendo duas funções recursivas, uma para retornar o maior valor e outra o menor de um array de inteiros.
Só isso.

é isso q eu ia dizer, ele provavelmente tem um exercicio sobre recursividade para fazer… e eu ia perguntar tb se deveria ser tudo em 1 método (o que torna o problema bastante complexo), ou se poderia usar um método para o maior e outro para o menor (o que faz mais sentido e seria mais facil)

WendersonLP

O complicado é querer inventar.

WellingtonRamos
MajorMinor teste(MajorMinor mm, int[] array, int initialPos){
		
		if(array.length == 0){
			return null;
		}
		
		mm.setMajor(array[initialPos]);
		mm.setMinor(array[initialPos]);
		
		if(++initialPos == array.length){
			return mm;
		}
		
		return teste(mm, array, initialPos);
		
	}
Classe auxiliar MajorMinor:
class MajorMinor {
	int major = Integer.MIN_VALUE;
	int minor = Integer.MAX_VALUE;
	
	public void setMajor(int major) {
		if(this.major < major){
			this.major = major;
		}
	}

	public void setMinor(int minor) {
		if(this.minor > minor){
			this.minor = minor;
		}
	}

	@Override
	public String toString() {
		return "major= " + major + " and minor= " + minor;
	}
}
Criado 28 de abril de 2010
Ultima resposta 29 de abr. de 2010
Respostas 12
Participantes 9