# C++ 程序：使用递归计算数字的阶乘

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

#### 使用递归查找非负整数（由用户输入）的阶乘的示例。

要理解此示例，您应该了解以下 [C++ 编程](/cpp-programming "C++ tutorial")主题：

*   [C++ 函数](/cpp-programming/function)
*   [C++ 中用户定义函数的类型](/cpp-programming/user-defined-function-types)
*   [C++ `if`，`if...else`和嵌套`if...else`](/cpp-programming/if-else)
*   [C++ 递归](/cpp-programming/recursion)

* * *

该程序从用户处获取一个正整数，然后计算该数字的阶乘。 假设用户输入 6，

```cpp
Factorial will be equal to 1*2*3*4*5*6 = 720

```

在此示例中，您将学习使用递归函数查找数字的阶乘。

访问此页面了解如何使用循环来计算[阶乘](/cpp-programming/examples/factorial "Source Code to find factorial")。

## 示例：使用递归计算阶乘

```cpp
#include<iostream>
using namespace std;

int factorial(int n);

int main()
{
    int n;

    cout << "Enter a positive integer: ";
    cin >> n;

    cout << "Factorial of " << n << " = " << factorial(n);

    return 0;
}

int factorial(int n)
{
    if(n > 1)
        return n * factorial(n - 1);
    else
        return 1;
} 
```

**输出**

```cpp
Enter an positive integer: 6
Factorial of 6 = 720
```

在上面的程序中，假设用户输入数字 6。该数字将传递到`factorial()`函数。

在此函数中，将 6 乘以阶乘（`6-1 = 5`）。 为此，数字 5 再次传递给`factorial()`函数。

同样，在下一次迭代中，将 5 乘以（`5-1 = 4`）的阶乘。 并且，将 4 传递给`factorial()`函数。

这将继续直到值达到 1 并且函数返回 1。

现在，每个函数将值返回以计算`1 * 2 * 3 * 4 * 5 * 6 = 720`，该值将返回到`main()`函数。