In dit programma leer je de faculteit van een getal te vinden met behulp van de for en while-lus in Kotlin. U leert ook bereiken te gebruiken om dit probleem op te lossen.
De faculteit van een positief getal n wordt gegeven door:
faculteit van n (n!) = 1 * 2 * 3 * 4 *… * n
Voorbeeld 1: Vind de faculteit van een getal met de lus for
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") )
Wanneer u het programma uitvoert, is de uitvoer:
Factoriaal van 10 = 3628800
In dit programma hebben we for loop gebruikt om door alle getallen tussen 1 en het opgegeven getal num (10) te lopen, en het product van elk getal tot num wordt opgeslagen in een variabele faculteit.
In tegenstelling tot Java kunt u in Kotlin bereiken ( 1… num
) en in operator gebruiken om door getallen tussen 1 en num te lopen.
We hebben ook long gebruikt in plaats van int om grote resultaten van faculteit op te slaan.
Het is echter nog steeds niet groot genoeg om de waarde van grotere getallen op te slaan (zeg 100). Voor resultaten die niet in een lange variabele kunnen worden opgeslagen, gebruiken we BigInteger
de in java.math
bibliotheek gedeclareerde variabele .
Hier is de equivalente Java-code: Java-programma om de faculteit van een nummer te vinden.
Voorbeeld 2: Vind de faculteit van een getal met BigInteger
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") )
Wanneer u het programma uitvoert, is de uitvoer:
Factorial van 30 = 20589113209464900000000000000000000000000000000
Hier gebruiken long
we in plaats van BigInteger
variabele faculteit.
Omdat we *
niet kunnen worden gebruikt BigInteger
, gebruiken we in plaats daarvan multiply()
voor het product. Ook moet num worden gecast BigInteger
voor vermenigvuldiging.
Evenzo kunnen we ook een while-lus gebruiken om dit probleem op te lossen.
Voorbeeld 3: Vind de faculteit van een getal met de while-lus
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") )
Wanneer u het programma uitvoert, is de uitvoer:
Factoriaal van 5 = 120
In het bovenstaande programma moeten we, in tegenstelling tot een for-lus, de waarde van i binnen de body van de lus verhogen.
Hoewel beide programma's technisch correct zijn, is het in dit geval beter om for loop te gebruiken. Het is omdat het aantal iteraties (tot aantal) bekend is.
Bezoek deze pagina om te leren om de faculteit van een getal te vinden met behulp van recursie.