正数n的阶乘由下式给出:
factorial of n (n!) = 1 * 2 * 3 * 4 *... * n
负数的阶乘不存在。 0
的阶乘为1
。
在此示例中,您将学习使用递归查找数字的阶乘。访问此页面以了解如何使用循环查找数字的阶乘。
使用递归的阶乘
#include
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()
函数。