Fatorial num vetor

11 respostas
V

Pessoal to tentado fazer com que os valores digitados num vetor pelo usário na hora de impressos ele me de o fatorial de cada um deles eu fiz assim mas ta errado algume pode me ajudar???

public static void main(String[] args) {   
	    int vet0[] = new int[5];  
	    
	    int i = 0 ;
	   
	    for(i=0; i<5; i++){     
	     String aux = JOptionPane.showInputDialog(null,"Digite N° para posição " +i+ " do 1°Vetor:");     
	     vet0[i] = Integer.parseInt(aux);     
         	   
	    }
	   for(i=0; i<5; i++){
		   vet0[i]= vet0[i]*i;
		   System.out.print(vet0[i]);
	   } 
	  
		    
		   		   
	}  
}

11 Respostas

T

Você viu aqui que todos os valores vão dar zero, não? Explique por que é que está dando zero. (Dica: por que é que você não calcula o fatorial em um método separado?)

for(i=0; i<5; i++){  
            vet0[i]= vet0[i]*i;  
            System.out.print(vet0[i]);  
        }
V

thingol:
Você viu aqui que todos os valores vão dar zero, não? Explique por que é que está dando zero. (Dica: por que é que você não calcula o fatorial em um método separado?)

for(i=0; i<5; i++){ vet0[i]= vet0[i]*i; System.out.print(vet0[i]); }

a resposta que ele me da é 02468 se eu digitar pra todos os valores do vetor o 2 … mas msmo assim não me resolve nada como assim deixar em método separado??

T

Crie um método chamado "fatorial" que receba um número e retorne o fatorial desse número.

A seguir, chame-o para preencher o vetor. Por exemplo,

for(i=0; i<5; i++){  
            System.out.println(fatorial (vet0[i]));  
        }
V

thingol:
Crie um método chamado "fatorial" que receba um número e retorne o fatorial desse número.

A seguir, chame-o para preencher o vetor. Por exemplo,

for(i=0; i<5; i++){ System.out.println(fatorial (vet0[i])); }

sim eu entendo como vc diz para eu fazer mas é que esse jeito não vi na faculdade ainda me diga senão for pedir muito tem como vc fazer pra mim e colar o código ??? para eu poder análisar…

T

Escolha nesta página.
Algumas implementações de fatorial no GUJ

rodrigo.bossini
import javax.swing.*;
class Test{
	public static void main (String [] args){
		int [] vetor = new int [5];

		for (int i = 0; i < 5; i++){
			String aux = JOptionPane.showInputDialog (null, "Digite número: ");
			vetor[i] = Integer.parseInt (aux);
		}

		for ( int j : vetor)
			System.out.println ("Fatorial de " + j + ":" + fatorial (j));
	}

	static int fatorial (int n){
		if (n == 1 || n==0) return 1;

		return ((fatorial (n-1)) * n);
	}
}
O

Tive uma idéia pro seu problema.
Você pode ir calculando o fatorial da lista ordenada, assim o fatorial do elemento i+1 pode ser calculado a partir do fatorial do elemento i.
A complexidade dessa solução é igual a O(AO) + X, onde AO = Algoritmo de Ordenação usado e X é o maior elemento da lista.
A complexidade de calcular o fatorial de todos elementos normalmente é a soma dos elementos.

To sem cabeça agora (leia-se “com fome”) pra calcular qual é o melhor ou se depende do caso.

V

[quote=rod.attack]

static int fatorial (int n){
	if (n == 1 || n==0) return 1;

	return ((fatorial (n-1)) * n);
}

}

cara testei teu código ele fumego bacaninha mas não entendi uma coisa esse aqui é oq faz acontecer o fatorial???

rodrigo.bossini

[quote=VictorFarion]

rod.attack:

static int fatorial (int n){
	if (n == 1 || n==0) return 1;

	return ((fatorial (n-1)) * n);
}

}

cara testei teu código ele fumego bacaninha mas não entendi uma coisa esse aqui é oq faz acontecer o fatorial???

Exato, essa é uma função <a href = "http://www.google.com.br/search?hl=pt-BR&q=recurs%C3%A3o&btnG=Pesquisa+Google&meta=&aq=f&oq=" >recursiva </a> que calcula o fatorial do número n, passado por parâmetro. Qualquer problema que você resolve com recursão pode também ser resolvido por meio de estruturas de repetição (for, while, etc) e vice-versa. Porém, dependendo do problema é interessante você escolher uma solução ou outra.</p>

V

[quote=rod.attack]

VictorFarion:
rod.attack:

static int fatorial (int n){
	if (n == 1 || n==0) return 1;

	return ((fatorial (n-1)) * n);
}

}

cara testei teu código ele fumego bacaninha mas não entendi uma coisa esse aqui é oq faz acontecer o fatorial???

Exato, essa é uma função <a href = "http://www.google.com.br/search?hl=pt-BR&q=recurs%C3%A3o&btnG=Pesquisa+Google&meta=&aq=f&oq=" >recursiva </a> que calcula o fatorial do número n, passado por parâmetro. Qualquer problema que você resolve com recursão pode também ser resolvido por meio de estruturas de repetição (for, while, etc) e vice-versa. Porém, dependendo do problema é interessante você escolher uma solução ou outra.

</p> <p>certo e vamos supor que se eu fizesse uma matriz e só quizesse fazer um fatorial pra uma linha eu poderia usar o msmo recurso???</p>

rodrigo.bossini

Claro…a função recursiva nada tem a ver com a estrutura onde vc está armazenando os dados…cuidado pra não confundir as coisas, se tá em dúvida sobre o que é recursão, dá uma olhada aqui.

Criado 25 de março de 2009
Ultima resposta 25 de mar. de 2009
Respostas 11
Participantes 4