正数 n 的阶乘由下式给出:
factorial of n (n!) = 1 * 2 * 3 * 4 *... * n
负数的阶乘不存在。0
的阶乘是1
。
在本例中,您将学习如何使用递归查找一个数的阶乘。访问此页面了解如何使用循环查找一个数的阶乘。
使用递归计算数字的阶乘
#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;
}
输出
Enter a positive integer: 6 Factorial of 6 = 720
假设用户输入了6。
最初,multiplyNumbers()
从main()
调用,并将6作为参数传递。
然后,从同一个函数(递归调用)将5传递给multiplyNumbers()
。在每次递归调用中,参数n的值都会减1。
当n的值小于1时,不再有递归调用,阶乘最终会被返回到main()
函数。