使用递归求一个数的阶乘的 C 程序
要理解此示例,您应该具备以下 C 语言编程主题的知识:
正数 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
。
最初,从 main()
中, 6
作为参数传递给 multiplyNumbers()
调用。
然后, multiplyNumbers()
从同一个函数(递归调用)传递 5
。在每次递归调用中,参数的值 n
减少了 1。
当值为 n
小于 1,没有递归调用,阶乘最终返回给 main()
函数。