# Kotlin 程序：使用递归查找数字的阶乘

> 原文： [https://www.programiz.com/kotlin-programming/examples/factorial-recursion](https://www.programiz.com/kotlin-programming/examples/factorial-recursion)

#### 在此程序中，您将学习使用 Kotlin 中的递归函数查找并显示数字的阶乘。

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

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

负数的阶乘不存在。 阶乘 0 为 1。

在此示例中，您将学习使用递归查找数字的阶乘。 访问此页面了解如何使用循环查找数字的[阶乘](/kotlin-programming/examples/factorial "Kotlin program to calculate factorial using loop")。

## 示例：使用递归的阶乘

```kt
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
}
```

运行该程序时，输出为：

```kt
Factorial of 6 = 720
```

最初，从`main()`函数调用`multiplyNumbers()`，并将 6 作为参数传递。

由于 6 大于或等于 1，因此将 6 与`multiplyNumbers()`的结果相乘，其中传递了 5（数字-1）。 由于是从同一函数调用的，因此它是递归调用。

在每个递归调用中，参数`num`的值减小 1，直到`num`小于 1。

当`num`的值小于 1 时，将没有递归调用。

每个递归调用都会返回给我们：

```kt
6 * 5 * 4 * 3 * 2 * 1 * 1 (for 0) = 720
```

以下是等效的 Java 代码：[使用递归](/java-programming/examples/factorial-recursion "Java Program to find factorial using recursion")查找阶乘的 Java 程序