c语言求阶乘函数的关键点?
求阶乘函数的关键点在于正确地定义递归或循环算法,并且处理好特殊情况如0的阶乘。
在递归算法中,需要确保基本情况下的返回值(即0的阶乘为1)和递归情况下的正确调用和返回关系。
在循环算法中,需要正确地使用循环结构和累乘的方法得到阶乘结果。另外,需要注意阶乘结果可能会超出整数范围,需要使用长整型或者其他方法来处理。正确地理解和实现这些关键点能够确保阶乘函数的正确性和效率。
f是fac()函数内部的静态变量,那么,f只在第一次进入fac()函数时才执行其初始化操作,以后都会跳过初始化操作。
所以第一次执行fac(1)函数时,f初始化为1,并乘以1,f仍为1;第二次执行fac(2)时,跳过初始化操作,f=f*2,f为2;第三次执行fac(3)时,跳过初始化操作,f=f*3,f为6;第四次执行fac(4)时,跳过初始化操作,f=f*4,f为24;......以此类推。
编写一个计算n的阶乘的函数,用主函数调用它,使之输出七阶杨辉三角?
#include"stdio.h"
int fac(int n){
int f=1,i;
for(i=2;i<=n;i++)
f*=i;return f;
}
int main(){
int i,j;
for(i=0;i<8;i++){
for(j=0;j<7-i;j++)
printf(" ");
for(j=0;j<=i;j++)
printf("%4d",fac(i)/(fac(j)*fac(i-j)));
printf("\n");
}
return 0;
}