V tomto programu se naučíte najít faktoriál čísla pomocí smyčky for a while v Kotlin. Naučíte se také používat rozsahy k řešení tohoto problému.
Faktoriál kladného čísla n je dán vztahem:
faktoriál n (n!) = 1 * 2 * 3 * 4 * … * n
Příklad 1: Najděte faktoriál čísla pomocí smyčky 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") )
Když spustíte program, výstup bude:
Faktoriál 10 = 3628800
V tomto programu jsme použili smyčku pro smyčku všech čísel mezi 1 a daným číslem num (10) a součin každého čísla do num je uložen v proměnném faktoriálu.
Na rozdíl od Javy můžete v Kotlinu použít rozsahy ( 1… num
) a v operátoru k procházení čísel mezi 1 až num.
Také jsme použili long místo int k uložení velkých výsledků faktoriálu.
Stále však není dost velký na to, aby ukládal hodnotu větších čísel (řekněme 100). U výsledků, které nelze uložit do dlouhé proměnné, použijeme BigInteger
proměnnou deklarovanou v java.math
knihovně.
Zde je ekvivalentní kód Java: Program Java k vyhledání faktoriálu čísla.
Příklad 2: Najděte faktoriál čísla pomocí 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") )
Když spustíte program, výstup bude:
Faktoriál 30 = 205891132094649000000000000000000000000000000
Zde místo toho long
používáme BigInteger
proměnný faktoriál.
Protože *
nelze použít s BigInteger
, místo toho použijeme multiply()
pro produkt. BigInteger
Pro rozmnožování by také mělo být sesláno num .
Podobně můžeme k řešení tohoto problému použít i while smyčku.
Příklad 3: Najděte faktoriál čísla pomocí smyčky 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") )
Když spustíte program, výstup bude:
Faktoriál 5 = 120
Ve výše uvedeném programu, na rozdíl od smyčky for, musíme zvýšit hodnotu i uvnitř těla smyčky.
Ačkoli jsou oba programy technicky správné, je v tomto případě lepší použít smyčku. Je to proto, že je znám počet iterací (až num).
Na této stránce se naučíte najít faktoriál čísla pomocí rekurze.