//实现factorial(阶乘)算法
#include <stdio.h>
void main()
{
int factorial_rec(int a);
int factorial_iter(int b);
int s;
printf("请输入一个数字:");
scanf("%d", &s);
printf("使用递归:%d", factorial_rec(s));
printf("\n使用迭代:%d", factorial_iter(s));
}
//使用递归 --- 递归容易造成栈溢出,要谨慎使用
int factorial_rec(int a) {
if (a > 1) {
return a * factorial_rec(a - 1);
} else {
return 1;
}
}
//使用迭代 --- 迭代堆空间要求没递归苛刻,但是逻辑算法没有递归简单明了
int factorial_iter(int b) {
int i, s = 1;
if (b) {
for (i=1; i<=b; i++) {
s *= i;
}
}
return s;
}
使用c语言简单实现阶乘算法