English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Kotlin 基础教程

Kotlin 流程控制

Fonctions en Kotlin

Chaine de caractères en Kotlin

Kotlin 面向对象(OOP)

Kotlin程序查找数字的阶乘

Recueil d'exemples Kotlin

在此程序中,您将学习在Kotlin中使用for和while循环查找数字的阶乘。您还将学习使用 range 来解决此问题。

正数的阶乘由下式n给出:

factorial of n (n!) = 1 * 2 * 3 * 4 * ... * n

Exemple1:使用for循环查找数字的阶乘

fun main(args: Array<String>) {
    val num = 10
    var factorial: Long = 1
    for (i in 1..num) {
        // factorial = factorial * i;
        factorial *= i.toLong()
    }
    println("$num 的阶乘 =$factorial")
}

Lorsque ce programme est exécuté, la sortie est :

10 的阶乘 = 3628800

在此程序中,我们使用循环来循环遍历1至给定数字num(10)之间的所有数字,将每个数字的相乘直到num,并存储在变量 factorial 中。

与Java不同,在Kotlin中,您可以使用range(1..num)和in 运算符在1到num 之间的数字之间循环。

同样,我们使用long而不是int,是为了存储数字较大的阶乘结果。

但是,它有可能仍然不足以存储较大数字的值(例如1...10对于不能存储在 long 变量中的结果,我们使用在java.math库中声明的 BigInteger 变量。

这是等效的Java代码:查找数字阶乘的Java程序。

Exemple2:使用BigInteger查找数字的阶乘

import java.math.BigInteger
fun main(args: Array<String>) {
    val num = 30
    var factorial = BigInteger.ONE
    for (i in 1..num) {
        // factorial = factorial * i;
        factorial = factorial.multiply(BigInteger.valueOf(num.toLong()))
    }
    println("$num 的阶乘  =$factorial")
}

Lorsque ce programme est exécuté, la sortie est :

30 的阶乘  = 205891132094649000000000000000000000000000000

这里,我们用BigInteger变量的阶乘代替long。

由于 * 运算符不能与BigInteger一起使用,我们对乘积使用multiply()。另外,num应该被转换为BigInteger以进行乘法运算。

同样,我们也可以使用while循环来解决此问题。

Exemple3:使用while循环查找数字的阶乘

fun main(args: Array<String>) {
    val num = 5
    var i = 1
    var factorial: Long = 1
    while (i <= num) {
        factorial *= i.toLong()
        i++
    }
    println("$num le facteuriel = $factorial")
}

Lorsque ce programme est exécuté, la sortie est :

5 Le facteuriel de 120

Dans le programme ci-dessus, contrairement à la boucle for, nous devons augmenter la valeur de i à l'intérieur de la boucle.

Bien que les deux programmes soient techniquement corrects, il est préférable d'utiliser une boucle for dans ce cas. C'est parce que le nombre d'itérations (maximum de num) est connu.

Recueil d'exemples Kotlin