În acest program, veți învăța să găsiți factorialul unui număr folosind bucla for și while în Java.
Pentru a înțelege acest exemplu, ar trebui să aveți cunoștințele despre următoarele subiecte de programare Java:
- Java pentru buclă
- Java while și do … while Buclă
Factorialul unui număr pozitiv n este dat de:
factorial de n (n!) = 1 * 2 * 3 * 4 * … * n
Exemplul 1: Găsiți factorul unui număr folosind bucla for
public class Factorial ( public static void main(String() args) ( int num = 10; long factorial = 1; for(int i = 1; i <= num; ++i) ( // factorial = factorial * i; factorial *= i; ) System.out.printf("Factorial of %d = %d", num, factorial); ) )
Ieșire
Factorial de 10 = 3628800
În acest program, am folosit pentru buclă pentru a parcurge toate numerele cuprinse între 1 și numărul dat (10), iar produsul fiecărui număr până la num este stocat într-un factorial variabil.
Am folosit mult timp în loc de int pentru a stoca rezultate mari ale factorialului. Cu toate acestea, încă nu este suficient de mare pentru a stoca valoarea unui număr mai mare (să zicem 100).
Pentru rezultatele care nu pot fi stocate într-o variabilă lungă, folosim BigInteger
variabila declarată în java.math
bibliotecă.
Exemplul 2: Găsiți factorul unui număr folosind BigInteger
import java.math.BigInteger; public class Factorial ( public static void main(String() args) ( int num = 30; BigInteger factorial = BigInteger.ONE; for(int i = 1; i <= num; ++i) ( // factorial = factorial * i; factorial = factorial.multiply(BigInteger.valueOf(i)); ) System.out.printf("Factorial of %d = %d", num, factorial); ) )
Ieșire
Factorial de 30 = 265252859812191058636308480000000
Aici, în loc de long
, folosim BigInteger
factorial variabil.
Deoarece, *
nu poate fi utilizat cu BigInteger
, în schimb, îl folosim multiply()
pentru produs. De asemenea, num ar trebui aruncat BigInteger
pentru multiplicare.
La fel, putem folosi și o buclă while pentru a rezolva această problemă.
Exemplul 3: Găsiți factorul unui număr folosind bucla while
public class Factorial ( public static void main(String() args) ( int num = 5, i = 1; long factorial = 1; while(i <= num) ( factorial *= i; i++; ) System.out.printf("Factorial of %d = %d", num, factorial); ) )
Ieșire
Factorial de 5 = 120
În programul de mai sus, spre deosebire de bucla for, trebuie să creștem valoarea lui în corpul buclei.
Deși ambele programe sunt corecte din punct de vedere tehnic, este mai bine să folosiți bucla în acest caz. Acest lucru se datorează faptului că numărul iterației (până la num) este cunoscut.
Accesați această pagină pentru a afla cum să găsiți factorialul unui număr folosind recursivitatea.