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???
[code] 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]);
}
}
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?)
[quote=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?)
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??
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…
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.
static int fatorial (int n){
if (n == 1 || n==0) return 1;
return ((fatorial (n-1)) * n);
}
}[/code][/quote]
cara testei teu código ele fumego bacaninha mas não entendi uma coisa esse aqui é oq faz acontecer o fatorial???
[/quote]
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>
static int fatorial (int n){
if (n == 1 || n==0) return 1;
return ((fatorial (n-1)) * n);
}
}[/code][/quote]
cara testei teu código ele fumego bacaninha mas não entendi uma coisa esse aqui é oq faz acontecer o fatorial???
[/quote]
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.[/quote]</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>
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.