În acest program, veți învăța să găsiți factorialul unui număr folosind bucla for și while în Kotlin. De asemenea, veți învăța să utilizați intervale pentru a rezolva această problemă.
Factorialul unui număr pozitiv n este dat de:
factorial de n (n!) = 1 * 2 * 3 * 4 * … * n
Exemplul 1: Găsiți factorul unui număr folosind bucla 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") )
Când rulați programul, ieșirea va fi:
Factorial de 10 = 3628800
În acest program, am folosit pentru buclă pentru a parcurge toate numerele cuprinse între 1 și numărul dat (10), iar produsul fiecărui număr până la num este stocat într-un factorial variabil.
Spre deosebire de Java, în Kotlin, puteți utiliza range ( 1… num
) și în operator pentru a parcurge numerele între 1 și num.
De asemenea, am folosit mult timp în loc de int pentru a stoca rezultate mari ale factorialului.
Cu toate acestea, încă nu este suficient de mare pentru a stoca valoarea unui număr mai mare (să zicem 100). Pentru rezultatele care nu pot fi stocate într-o variabilă lungă, folosim BigInteger
variabila declarată în java.math
bibliotecă.
Iată codul Java echivalent: Programul Java pentru a găsi factorul unui număr.
Exemplul 2: Găsiți factorul unui număr folosind 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") )
Când rulați programul, ieșirea va fi:
Factorial de 30 = 20589113209464900000000000000000000000000000000
Aici, în loc de long
, folosim BigInteger
factorial variabil.
Deoarece, *
nu poate fi utilizat cu BigInteger
, în schimb, îl folosim multiply()
pentru produs. De asemenea, num ar trebui aruncat BigInteger
pentru multiplicare.
La fel, putem folosi și o buclă while pentru a rezolva această problemă.
Exemplul 3: Găsiți factorul unui număr folosind bucla 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") )
Când rulați programul, ieșirea va fi:
Factorial de 5 = 120
În programul de mai sus, spre deosebire de bucla for, trebuie să creștem valoarea lui în corpul buclei.
Deși ambele programe sunt corecte din punct de vedere tehnic, este mai bine să folosiți bucla în acest caz. Acest lucru se datorează faptului că numărul iterației (până la num) este cunoscut.
Accesați această pagină pentru a afla cum să găsiți factorialul unui număr folosind recursivitatea.