In dit programma leer je om de faculteit van een getal te vinden met behulp van de for en while-lus in Java.
Om dit voorbeeld te begrijpen, moet u kennis hebben van de volgende Java-programmeeronderwerpen:
- Java voor Loop
- Java while en do … while Loop
De faculteit van een positief getal n wordt gegeven door:
faculteit van n (n!) = 1 * 2 * 3 * 4 *… * n
Voorbeeld 1: Vind de faculteit van een getal met de lus 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); ) )
Uitvoer
Factoriaal van 10 = 3628800
In dit programma hebben we for loop gebruikt om door alle getallen tussen 1 en het opgegeven getal num (10) te lopen, en het product van elk getal tot num wordt opgeslagen in een variabele faculteit.
We hebben long gebruikt in plaats van int om grote resultaten van faculteit op te slaan. Het is echter nog steeds niet groot genoeg om de waarde van grotere getallen op te slaan (zeg 100).
Voor resultaten die niet in een lange variabele kunnen worden opgeslagen, gebruiken we BigInteger
de in java.math
bibliotheek gedeclareerde variabele .
Voorbeeld 2: Vind de faculteit van een getal met 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); ) )
Uitvoer
Factorial van 30 = 265252859812191058636308480000000
Hier gebruiken long
we in plaats van BigInteger
variabele faculteit.
Omdat we *
niet kunnen worden gebruikt BigInteger
, gebruiken we in plaats daarvan multiply()
voor het product. Ook moet num worden gecast BigInteger
voor vermenigvuldiging.
Evenzo kunnen we ook een while-lus gebruiken om dit probleem op te lossen.
Voorbeeld 3: Vind de faculteit van een getal met de while-lus
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); ) )
Uitvoer
Factoriaal van 5 = 120
In het bovenstaande programma moeten we, in tegenstelling tot een for-lus, de waarde van i binnen de body van de lus verhogen.
Hoewel beide programma's technisch correct zijn, is het in dit geval beter om for loop te gebruiken. Het is omdat het aantal iteraties (tot aantal) bekend is.
Bezoek deze pagina om te leren om de faculteit van een getal te vinden met behulp van recursie.