4
respostas

Resposta - Desafio opcional: Fatorial

Minha resolução:

public class TesteFatorial {
    public static void main(String[] args) {
        int fatorial = 1;
        for(int i = 0; i <= 10; i++) {
            fatorial *= i;
            System.out.println("Fatorial de " + i + "é: " + fatorial + "!");
        }
    }
}
4 respostas

Interessante!

Minha solução ficou bem parecida. Fiz outra solução com o laço while só pra testar:

public static void main(String[] args) {

    int fatorial = 1;

    for (numero = 1; numero <= 10; numero++) {
        fatorial *= numero;    
        System.out.println( numero + "! = " + fatorial);    
    }    
}

}

***Com o laço while

public static void main(String[] args) {

    int numero = 1; 
    int fatorial = 1;

    while(numero <= 10) { 

        fatorial *= numero;
        System.out.println( numero + "! = " + fatorial);
        numero++;
    }
}    

}

Minha solução foi essa :)

public class Fatorial {
    public static void main(String[] args) {

        int fatorial = 1; // pode assumir qualquer valor positivo {0, 1, 2, ...}

        if(fatorial == 0) {
            System.out.println(fatorial + "! = 1");
        } else {
            System.out.print(fatorial + "! = ");
            for(int i = fatorial - 1; i > 0; i--) {
                fatorial *= i;
            }
            System.out.println(fatorial);
        }
    }
}

Mas também consegui fazer usando um método que chama ele mesmo.

public class Fatorial { 
  public static void main(String[] args) {

    int numero = 1; // pode assumir qualquer valor positivo {0, 1, 2, ...}

    System.out.println(numero + "! = " + fatorial(numero));
  }

  public static int fatorial(int numero) {
    if(numero == 0) {
      return 1;
    } else {
      return numero * fatorial(numero - 1); 
    }
  }
}

Sthefany, tudo bem?

Na sua resolução acredito que os resultados darão sempre zero, porque na primeira passagem do laço "for", "fatorial" = 1 e "i" = 0, portanto a expressão "fatorial *= i;" vai resultar zero.

Como "fatorial" vai passar a ser zero, isto vai se repetir nos outros laços.

Eu solucionei de forma quase igual a sua, só coloquei uma condicional para o primeiro caso:

public class Fatorial 
{
    public static void main(String[] args) 
    {
        int fatorial = 1;
            for (int numero = 0; numero <= 10; numero++)
            {
                if(numero != 0) fatorial *= numero;
                else fatorial = 1;
                System.out.println("O fatorial de "+numero+" é "+fatorial+" ("+numero+"!="+fatorial+").");
            }
    }
}

Fiz o meu desta forma.

public class Fatorial {

    public static void main(String[] args) {
        int fatorial = 1;
        for (int n = 1; n <= 10; n++) {
            fatorial *= n;
            if (n == 10) {
                System.out.print(n);
                break;
            }
            System.out.print(n + " x");
            System.out.print(" ");
        }
        System.out.print(" = " + fatorial);
    }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software