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 BigInteger
deklareeritud 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 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
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.