跳到主要内容

C 编程:使用递归计算数字的阶乘

为了理解这个示例,你应该具备以下 C语言编程 主题的知识:

正数 n 的阶乘表示为:

阶乘 n (n!) = 1 * 2 * 3 * 4 *...  * n

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

在这个示例中,你将学习如何使用递归来找到一个数的阶乘。访问这个页面可以了解如何使用循环找到一个数的阶乘

使用递归计算数字的阶乘

#include<stdio.h>
long int multiplyNumbers(int n);
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d",&n);
printf("%d 的阶乘 = %ld", n, multiplyNumbers(n));
return 0;
}

long int multiplyNumbers(int n) {
if (n>=1)
return n*multiplyNumbers(n-1);
else
return 1;
}

输出

请输入一个正整数:6
6 的阶乘 = 720

假设用户输入了 6。

最初,multiplyNumbers()main() 函数调用,并传递 6 作为参数。

然后,5 被传递给 multiplyNumbers() 函数(递归调用)。在每次递归调用中,参数 n 的值减少 1。

n 的值小于 1 时,不会进行递归调用,阶乘最终被返回给 main() 函数。