正数 n 的阶乘由下式给出:
factorial of n (n!) = 1 * 2 * 3 * 4 * ... * n
负数的阶乘不存在。0 的阶乘是 1。
在此示例中,您将学习如何使用递归求数字的阶乘。访问此页面了解如何使用循环求 数字的阶乘。
示例:使用递归计算数字的阶乘
fun main(args: Array<String>) {
val num = 6
val factorial = multiplyNumbers(num)
println("Factorial of $num = $factorial")
}
fun multiplyNumbers(num: Int): Long {
if (num >= 1)
return num * multiplyNumbers(num - 1)
else
return 1
}
运行程序后,输出将是
Factorial of 6 = 720
最初,`multiplyNumbers()` 函数从 `main()` 函数调用,并将 6 作为参数传递。
由于 6 大于或等于 1,因此将 6 乘以 `multiplyNumbers()` 的结果,并将 5 (num -1) 作为参数传递。由于它是从同一函数调用的,因此这是一个递归调用。
在每次递归调用中,参数 `num` 的值都会减 1,直到 `num` 小于 1。
当 `num` 的值小于 1 时,不再进行递归调用。
每次递归调用都会返回,让我们得到
6 * 5 * 4 * 3 * 2 * 1 * 1 (for 0) = 720
这里是等效的 Java 代码:Java 递归求阶乘程序