Dans ce programme, vous apprendrez à trouver la factorielle d'un nombre en utilisant la boucle for et while dans Kotlin. Vous apprendrez également à utiliser des plages pour résoudre ce problème.
La factorielle d'un nombre positif n est donnée par:
factorielle de n (n!) = 1 * 2 * 3 * 4 *… * n
Exemple 1: Trouver factorielle d'un nombre en utilisant la boucle 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") )
Lorsque vous exécutez le programme, la sortie sera:
Factorielle de 10 = 3628800
Dans ce programme, nous avons utilisé for loop pour parcourir tous les nombres entre 1 et le nombre donné num (10), et le produit de chaque nombre jusqu'à num est stocké dans une variable factorielle.
Contrairement à Java, dans Kotlin, vous pouvez utiliser les plages ( 1… num
) et l'opérateur in pour parcourir les nombres entre 1 et num.
De plus, nous avons utilisé long au lieu de int pour stocker de gros résultats factoriels.
Cependant, ce n'est toujours pas assez grand pour stocker la valeur de nombres plus grands (disons 100). Pour les résultats qui ne peuvent pas être stockés dans une variable longue, nous utilisons la BigInteger
variable déclarée dans la java.math
bibliothèque.
Voici le code Java équivalent: Java Program to Find Factorial of a Number.
Exemple 2: recherche factorielle d'un nombre à l'aide de 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") )
Lorsque vous exécutez le programme, la sortie sera:
Factorielle de 30 = 205891132094649000000000000000000000000000000
Ici, au lieu de long
, nous utilisons la BigInteger
variable factorielle.
Puisque, *
ne peut pas être utilisé avec BigInteger
, nous utilisons multiply()
à la place pour le produit. En outre, num doit être converti en BigInteger
pour la multiplication.
De même, nous pouvons également utiliser une boucle while pour résoudre ce problème.
Exemple 3: Recherche factorielle d'un nombre en utilisant la boucle 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") )
Lorsque vous exécutez le programme, la sortie sera:
Factorielle de 5 = 120
Dans le programme ci-dessus, contrairement à une boucle for, nous devons incrémenter la valeur de i à l'intérieur du corps de la boucle.
Bien que les deux programmes soient techniquement corrects, il est préférable d'utiliser la boucle for dans ce cas. C'est parce que le nombre d'itérations (jusqu'à num) est connu.
Visitez cette page pour apprendre à trouver la factorielle d'un nombre en utilisant la récursivité.