Vocês podem corrigir?

13 respostas
R

Boa tarde!

Sou novo no java e estou usando a apostila FJ11 da caelum para aprender a linguagem. Nela contém alguns exercicios, gostaria de saber se minha ideia esta correta e se resolve mesmo o exercicio.

  1. Imprima os fatoriais de 1 a 10.
    O fatorial de um número n é n * n-1 * n-2 … até n = 1. Lembre-se de utilizar os parênteses. O fatorial de 0 é
    1 O fatorial de 1 é (0!) * 1 = 1 O fatorial de 2 é (1!) * 2 = 2 O fatorial de 3 é (2!) * 3 = 6 O fatorial de 4 é (3!) *
    4 = 24
    Faça um for que inicie uma variável n (número) como 1 e fatorial (resultado) como 1 e varia n de 1 até 10:
    for (int n=1, fatorial=1; n <= 10; n++) {
for(int fat = 1, fatorial = 1; fat <= 10; fat++) {
            int resultado = (fatorial - 1) * fat;
            System.out.println("O Fatorial de " + fatorial + " = " + resultado);
            fatorial++;

        }

13 Respostas

Thiago_MuiLoko

O que vc está fazendo está errado, vc deve usar recursão…

Como vc esta aprendendo, é importante que vc tente… Caso não consiga, poste sua dúvida que a gente te ajuda.

Boa sorte!

R

voce pode da um exemplo de recussão, por que aqui na apostila pelo menos ainda nao li essa palavra.

obrigado pela atenção.

E

Thiago MuiLoko:
O que vc está fazendo está errado, vc deve usar recursão…

Não precisa usar recursão para uma coisa dessas. Não deixe a cabeça do pobre coitado mais confusa que já está.

marcelo.bellissimo

Tenta isso:

int resultado = 0; for (int fat = 1, fatorial = 1; fat <= 10; fat++) { resultado = fatorial <= 1 ? 1 : fatorial * resultado; System.out.println("O Fatorial de " + fatorial + " = " + resultado); fatorial++; }

R

mas o q eu fiz foi asneira?
a ideia é certa?
nao quero saber se tem outras maneiras mais simples de fazer o que eu fiz, gostaria de saber se a minha ideia esta certa, se supre o q a questao esta pedindo?

tnaires

renatojcastro:
mas o q eu fiz foi asneira?
a ideia é certa?
nao quero saber se tem outras maneiras mais simples de fazer o que eu fiz, gostaria de saber se a minha ideia esta certa, se supre o q a questao esta pedindo?

Você rodou o programa? O resultado exibido foi o correto? Se não foi, não tem jeito: a idéia não está certa.

marcelo.bellissimo

renatojcastro:
mas o q eu fiz foi asneira?
a ideia é certa?
nao quero saber se tem outras maneiras mais simples de fazer o que eu fiz, gostaria de saber se a minha ideia esta certa, se supre o q a questao esta pedindo?

Sua idéia está certa, salvo alguns detalhes que estavam errados na sua lógica…

O mais “bonito” seria fazer recursão, mas primeiro tenta fazer funcionar e tenta entender as correções que eu fiz no seu código… se não entender algo, dá um toque…

R

você pode dizer o que esse trech faz?

resultado = fatorial <= 1 ? 1 : fatorial * resultado;
aluisiodsv

Está quaaase certa.
O problema é q a cada laço feito na repetição a variável de resultado é iniciada novamente.
O q vc deve fazer é iniciá-la fora do laço, ou seja:

int resultado = 0;

for (){

resultado = resultado + …

}
aluisiodsv

Esse ponto de interrogação é parecido com o if …

<uma pergunta> ? <uma resposta> : <senão, outra resposta>

R

po galera valeu mesmo :stuck_out_tongue:

ViniGodoy

Faça uma planilha no excel com os resultados certos. Ou calcule você mesmo na calculadora do Windows. Enfim, procure elaborar uma forma de testar se seu programa está correto, antes de executa-lo.

E então, rode seu programa. Pode ser também um bom exercício sobre como desenvolver o aplicativo.

marcelo.bellissimo

renatojcastro:
você pode dizer o que esse trech faz?

resultado = fatorial <= 1 ? 1 : fatorial * resultado;

Isso se chama “operador ternário”… como funciona?

expressão_de_verificação ? valor_para_true : valor_para_false;

Ele funciona como um “if” , com um resultado para o caso da expressão retornar “true” e outro no caso de retornar “false”…

Nessa linha, serve pra verificar se o valor sendo calculado é menor ou igual a 1 ( 0 ou 1, que nessa caso tem seu fatorial igual á 1)… pois esses são os únicos casos em que não é nem preciso calcular o fatorial…

Criado 9 de agosto de 2010
Ultima resposta 9 de ago. de 2010
Respostas 13
Participantes 7