Kotlini programm arvu faktori leidmiseks

Selles programmis õpite leidma arvu faktoori, kasutades Kotlinis tsüklit ja samal ajal. Samuti õpitakse selle probleemi lahendamiseks vahemikke kasutama.

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

 fun main(args: Array) ( val num = 10 var factorial: Long = 1 for (i in 1… num) ( // factorial = factorial * i; factorial *= i.toLong() ) println("Factorial of $num = $factorial") )

Programmi käivitamisel on väljund järgmine:

 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.

Erinevalt Java-st saate Kotlinis kasutada vahemikke ( 1… num) ja operaatoris numbrite vahemikus 1 kuni num.

Samuti oleme suurte faktooriumi tulemuste salvestamiseks 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 BigIntegerdeklareeritud muutujat java.math.

Siin on samaväärne Java-kood: Java-programm numbri faktori leidmiseks.

Näide 2: BigIntegeri abil leiate numbri faktori

 import java.math.BigInteger fun main(args: Array) ( val num = 30 var factorial = BigInteger.ONE for (i in 1… num) ( // factorial = factorial * i; factorial = factorial.multiply(BigInteger.valueOf(num.toLong())) ) println("Factorial of $num = $factorial") )

Programmi käivitamisel on väljund järgmine:

 Faktoriaalarv 30 = 205891132094649000000000000000000000000000000000000

Siin longkasutame selle asemel BigIntegermuutuvat faktoriaali.

Kuna *seda ei saa kasutada BigInteger, kasutame selle multiply()toote asemel . Samuti tuleks BigIntegerkorrutamiseks arv valada numbrile .

Samamoodi võime selle probleemi lahendamiseks kasutada ka mõnda aega.

Näide 3: Leidke arvu faktor, kasutades silmust while

 fun main(args: Array) ( val num = 5 var i = 1 var factorial: Long = 1 while (i <= num) ( factorial *= i.toLong() i++ ) println("Factorial of $num = $factorial") )

Programmi käivitamisel on väljund järgmine:

 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.

Huvitavad Artiklid...