这是是求阶乘和的非递归实现:
// methods1.c
#include <stdio.h>
long double Fn(int n);
int main(void)
{
long double sum = 0;
int i, n;
i = n = 0;
printf("Please input a number: \n");
scanf("%d", &n);
if (n > 1000 )
printf("ERROR!The number is too large!\nPlease try again!(0~1000)\n");
else if (n < 0)
printf("ERROR!The number is invalid!\nPlease try again!(0~1000)\n");
else
{
for (i = 0; i <= n; i++)
sum += Fn(i);
printf("The %d factorial's sum is %Lf\n", n, sum);
}
return 0;
}
long double Fn(int n)
{
int i = 1;
long double temp = 1;
if (n == 0)
return 1;
for (i = 1; i <= n; i++)
temp = temp * i;
return temp;
}