Galera, o q ta comentado é a resolução do prof e ta correta… O negocio é q tive outro raciocínio e não sei extamente pq ta errado…alguma luz por favor?
// Faça um programa que calcule o fatorial de um número inteiro fornecido pelo usuário. Ex.: //5!=5.4.3.2.1=120
System.out.println("Entre com um numero");
int num = scan.nextInt();
System.out.println(num + "! = ");
int fatorial=1;
/* for (int i=num; i>0 ; i--) {
fatorial*=i;
System.out.println(i);
}*/
for(int i=1; i<num; i--) {
fatorial=num*(num-1);
}
System.out.println("Resultado: " + fatorial);
Quando num é 5, você está sempre multiplicando 5 x 4, e faz isso várias vezes sobrescrevendo o valor do fatorial. O certo é acumular o valor da variável, e não sobrescrever.
Além disso, a multiplicação tem que incluir o próprio num, então a condição tem que ser <=. E como o i tem que aumentar de valor a cada iteração, tem que ser i++ em vez de i--.
Ou seja:
int num = // ler o valor do número
int fatorial = 1;
for (int i = 2; i <= num; i++) {
fatorial *= i;
}
Ah sim, eu comecei o for em 2, porque não há necessidade de começar em 1 - qualquer número multiplicado por 1 é igual a ele mesmo então é redundante e desnecessário começar do 1.
Hugo muito obrigada hó… vc realmente esclareceu minha dúvida. é q eu viajo muito no raciocínio e as vezes saio da lógica… preciso manter mais meus pés no chão.
Muito obrigada pela dica.
Hoje acordei com o pensamento de ser mais objetiva e terminar logo a lista de 35 exercícios de repetição, travo muito no raciocínio, volto, repito um exercício já feito , tentando fazer de outra forma ,talvez eu vá além do que convém, ou talvez minha lógica é ruim mesmo rs!
Se você tiver tempo (e saco) para refazer 35 exercícios de 2 ou 3 formas diferentes… ótimo! Senão, simplesmente faça da forma mais eficaz e siga adiante.
E o tempo que você perderia refazendo os exercícios, você investe em aprender conteúdo novo.
Acho perfeito … e tbm acredito q preciso ser mais segura , no fundo morro de medo de ser reprovada em uma entrevista com algo básico e eu sei q sei sabe?? rs
Obrigada pelas dicas… são importantes demais pra mim! abraços
Você precisa ao menos saber fazer CRUD nas tecnologias que a vaga pede.
Uma coisa que ajuda é sempre buscar desafios novos, que te forcem a ver as coisas de forma diferente. Se você quiser umas ideias de projetos, me chama no privado.
Fique atenta às postagens aqui, as dicas são cada uma melhor que a outra. Você aprende bastante com as dúvidas dos outros.
E uma outra coisa que ajuda a aprofundar o conhecimento é, quando você tiver mais experiência, vir aqui no fórum e ajudar os novatos.
E sinta-se muito bem vinda ao fórum! Desejo excelente estadia!