第一种:函数的递推算法(利用for循环)
#include <stdio.h>
int main(void)
{
int a, i;
long factorial=1; //long变量以带符号的64位(8字节)整数形式存储,取值范围为-92223372036854到.....
printf("enter an interage:");
scanf("%d", &a);
for(i=1; i<=a; i++)
{
factorial *= i;
}
printf("%d\n", factorial);
return 0;
}
第二种:函数的递归调用法:
#include <stdio.h>
int facto();
int main(void)
{
int a;
int factorial;
printf("enter an interage:");
scanf("%d", &a);
factorial=facto(a);//求阶乘的递归函数调用
printf("\ninterage %d factorial is: %d\n", a, factorial);
return 0;
}
int facto(int x)//定义了一个求阶乘的递归函数
{
if((x==1)||(x==0))
return 1;
else
return (x*facto(x-1));
}
递归函数的 优点是算法设计容易, 但诋毁函数的优点是在牺牲了 存储空间的基础上得到的。