Selles programmis õpite leidma arvu faktoori, kasutades Java-s silmi ja while.
Selle näite mõistmiseks peaksid teil olema teadmised järgmistest Java programmeerimise teemadest:
- Java aasale
- Java ajal ja tee … Loopi ajal
Positiivse arvu n faktoriaal arvutatakse järgmiselt:
faktori väärtus n (n!) = 1 * 2 * 3 * 4 *… * n
Näide 1: Leidke numbri faktoriaal loopi jaoks
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äljund
Faktooriarv 10 = 3628800
Selles programmis oleme kasutanud tsüklit, et tsüklida läbi kõik numbrid vahemikus 1 kuni etteantud numbrini num (10) ja iga numbri kuni num korrutis salvestatakse muutuja faktoriaalisse.
Suurte faktooriumi tulemuste salvestamiseks oleme int-i asemel kasutanud pikka aega. Kuid see pole endiselt piisavalt suur, et suuremate arvude (näiteks 100) väärtust salvestada.
Tulemuste jaoks, mida ei saa pikka muutujasse salvestada, kasutame teegis BigInteger
deklareeritud muutujat java.math
.
Näide 2: BigIntegeri abil leiate numbri faktori
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äljund
Faktoriaalarv 30 = 265252859812191058636308480000000
Siin long
kasutame selle asemel BigInteger
muutuvat faktoriaali.
Kuna *
seda ei saa kasutada BigInteger
, kasutame selle multiply()
toote asemel . Samuti tuleks BigInteger
korrutamiseks arv valada numbrile .
Samamoodi võime selle probleemi lahendamiseks kasutada ka mõnda aega.
Näide 3: Leidke arvu faktor, kasutades silmust 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äljund
Faktoor 5 = 120
Eespool nimetatud programmis peame erinevalt for loop'ist suurendama i väärtust tsükli kehas.
Kuigi mõlemad programmid on tehniliselt õiged, on antud juhul parem kasutada loopi jaoks. Selle põhjuseks on asjaolu, et iteratsiooni arv (kuni num) on teada.
Rekursiooni abil numbri faktori leidmiseks külastage seda lehte.