c语言递归求n的阶乘

求n的阶乘,我们可以使用递归的方法。

递归

阶乘函数fac代码:

 int fac(int n)
{
  int result;
  if(n==0||n==1)
    result = 1;
  else
    result = fac(n-1)*n;
  return(result);
}

fac(n)是在调用这个阶乘函数,我们只需要往括号里输入一个数字,它就能求出这个数字的阶乘并return出来。

对于这个阶乘函数fac,来解释一下:

我们都知道,0的阶乘和1的阶乘都是1,所以就有

 if(n==0||n==1)
  result = 1;

我们发现一个规律,3的阶乘等于2的阶乘乘以3,4的阶乘等于3的阶乘乘以4…

所以n的阶乘就等于n-1的阶乘乘以n。

初始值我们知道了,相邻两项的关系我们也知道了,所以递归函数就可以写出来了。

其实这个fac函数代码还可以润色一下,因为我们输入的整数还可以是负数,我们考虑问题要考虑全了,所以代码修改为下面这样的:(这样更严谨一些)

 int fac(int n)
{
  int result;
  if(n < 0)
    printf("n不能小于0!");
  else if(n == 0 || n == 1)
    result = 1;
  else
    result = fac(n-1) * n;
  return(result);
}