Kotlin-ohjelma lukuarvon löytämiseksi

Tässä ohjelmassa opit etsimään luvun faktorin Kotlinin silmukka-ja-silmukan avulla. Opit myös käyttämään alueita tämän ongelman ratkaisemiseksi.

Positiivisen luvun n kerroin saadaan:

 kerroin n (n!) = 1 * 2 * 3 * 4 *… * n 

Esimerkki 1: Etsi luvun kerroin käyttämällä silmukkaa

 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") )

Kun suoritat ohjelmaa, tulos on:

 Kerroin 10 = 3628800

Tässä ohjelmassa olemme käyttäneet silmukkaa silmukoiden läpi kaikki numerot välillä 1 ja annettu numero num (10), ja jokaisen luvun tulo numeroon saakka on tallennettu muuttujaan.

Toisin kuin Java, Kotlinissa voit käyttää alueita ( 1… num) ja operaattorissa siirtyäksesi numeroiden välillä välillä 1 - num.

Lisäksi olemme käyttäneet pitkää int-sijasta tallentaaksemme suuria faktorial-tuloksia.

Se ei kuitenkaan ole vielä tarpeeksi suuri tallentamaan suurempien numeroiden (esimerkiksi 100) arvoa. Tuloksiin, joita ei voida tallentaa pitkään muuttujaan, käytämme kirjastossa BigIntegerilmoitettua muuttujaa java.math.

Tässä on vastaava Java-koodi: Java-ohjelma numeron tekijän löytämiseksi.

Esimerkki 2: Etsi luvun kerroin BigIntegerin avulla

 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") )

Kun suoritat ohjelmaa, tulos on:

 Kerroin 30 = 205891132094649000000000000000000000000000000000000

Täällä sen sijaan longkäytämme BigIntegermuuttujaa kertoma.

Koska *sitä ei voida käyttää BigInteger, käytämme sen sijaan multiply()tuotteelle. Myös numero tulisi heittää kohtaan BigIntegerkertolasku.

Samoin voimme käyttää jonkin aikaa silmukkaa tämän ongelman ratkaisemiseen.

Esimerkki 3: Etsi luvun kerroin while-silmukan avulla

 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") )

Kun suoritat ohjelmaa, tulos on:

 Kerroin 5 = 120

Yllä olevassa ohjelmassa, toisin kuin for -silmukalle, meidän on kasvatettava i: n arvoa silmukan rungossa.

Vaikka molemmat ohjelmat ovat teknisesti oikein, on parempi käyttää silmukkaa tässä tapauksessa. Se johtuu siitä, että iteroinnin määrä (upto num) on tiedossa.

Käy tällä sivulla oppiaksesi etsimään luvun faktori rekursiota käyttämällä.

Mielenkiintoisia artikkeleita...