V tomto programe sa naučíte nájsť faktoriál čísla pomocou slučky for and while v Jave.
Aby ste pochopili tento príklad, mali by ste mať znalosti nasledujúcich tém programovania v jazyku Java:
- Java pre slučku
- Java zatiaľ čo a robiť … zatiaľ čo Loop
Faktoriál kladného čísla n je daný:
faktoriál n (n!) = 1 * 2 * 3 * 4 * … * n
Príklad 1: Nájdite faktoriál čísla pomocou slučky 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); ) )
Výkon
Faktoriál 10 = 3628800
V tomto programe sme použili postupnosť opakovania medzi všetkými číslami medzi 1 a daným číslom num (10) a súčin každého čísla až do čísla num je uložený v premennom faktoriáli.
Použili sme dlho namiesto int na ukladanie veľkých výsledkov faktoriálu. Stále to však nie je dosť veľké na to, aby sa do nich uložila hodnota väčších čísel (povedzme 100).
Na výsledky, ktoré nie je možné uložiť do dlhej premennej, sa používa BigInteger
premenná deklarovaná v java.math
knižnici.
Príklad 2: Vyhľadajte faktoriál čísla pomocou nástroja 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); ) )
Výkon
Faktoriál 30 = 265252859812191058636308480000000
Tu namiesto long
použijeme BigInteger
premenný faktoriál.
Pretože *
sa nedá použiť BigInteger
, použijeme namiesto multiply()
toho produkt. Na BigInteger
množenie by sa malo prenášať aj číslo .
Rovnako môžeme na vyriešenie tohto problému použiť aj cykliku while.
Príklad 3: Nájdite faktoriál čísla pomocou cyklu 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); ) )
Výkon
Faktoriál 5 = 120
Vo vyššie uvedenom programe musíme na rozdiel od cyklu for zvýšiť hodnotu i vo vnútri tela slučky.
Aj keď sú oba programy technicky správne, v tomto prípade je lepšie použiť loop. Je to preto, lebo je známy počet iterácií (až do počtu).
Navštívte túto stránku a naučte sa nájsť faktoriál čísla pomocou rekurzie.