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

Kotlin程序查找数字的阶乘

Gesamtes Beispiel für Kotlin

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

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

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

Beispiel1:使用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")
}

Wenn das Programm ausgeführt wird, lautet die Ausgabe:

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程序。

Beispiel2:使用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")
}

Wenn das Programm ausgeführt wird, lautet die Ausgabe:

30 的阶乘 = 205891132094649000000000000000000000000000000

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

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

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

Beispiel3:使用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-Fakultät = $factorial")
}

Wenn das Programm ausgeführt wird, lautet die Ausgabe:

5 Fakultät  = 120

Im obigen Programm müssen wir im Unterschied zum for-Loop den Wert von i im Schleifenkörper erhöhen.

Obwohl beide Programme technisch korrekt sind, ist in diesem Fall ein for-Loop am besten geeignet. Dies liegt daran, dass die Anzahl der Iterationen (bis zu num) bekannt ist.

Gesamtes Beispiel für Kotlin