企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# C 程序:使用递归查找数字的阶乘 > 原文: [https://www.programiz.com/c-programming/examples/factorial-recursion](https://www.programiz.com/c-programming/examples/factorial-recursion) #### 在此示例中,您将学习查找用户使用递归输入的非负整数的阶乘。 要理解此示例,您应该了解以下 [C 编程](/c-programming "C tutorial")主题: * [C 函数](/c-programming/c-functions) * [C 用户定义的函数](/c-programming/c-user-defined-functions) * [C 递归](/c-programming/c-recursion) * * * 正数`n`的阶乘由下式给出: ```c factorial of n (n!) = 1 * 2 * 3 * 4 *... * n ``` 负数的阶乘不存在。`0`的阶乘为`1`。 在此示例中,您将学习使用递归查找数字的阶乘。 访问此页面以了解如何使用循环查找数字的[阶乘](https://www.programiz.com/c-programming/examples/factorial)。 * * * ## 使用递归的阶乘 ```c #include<stdio.h> long int multiplyNumbers(int n); int main() { int n; printf("Enter a positive integer: "); scanf("%d",&n); printf("Factorial of %d = %ld", n, multiplyNumbers(n)); return 0; } long int multiplyNumbers(int n) { if (n>=1) return n*multiplyNumbers(n-1); else return 1; } ``` **输出** ```c Enter a positive integer: 6 Factorial of 6 = 720 ``` * * * 假设用户输入了 6。 最初,从`main()`调用`multiplyNumbers()`,并将 6 作为参数传递。 然后,将 5 从相同的函数传递给`multiplyNumbers()`(递归调用)。 在每个递归调用中,参数`n`的值减小 1。 当`n`的值小于 1 时,没有递归调用,并且阶乘最终返回给`main()`函数。