求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); }