用三种方法实现阶乘求和:S=1+1!+..+N!
要求N从命令行输入,且1<=N<=10
方法一:标准方法求阶乘后求和
方法二:利用递推公式F(N)=N*F(N-1)实现,最小计算量
方法三:利用递归实现
编写函数,递归调用
F(N)=1 N=1;
F(N)=N*F(N-1) N>1
方法二和方法三第一次了解,想看到确切代码,方法一想看标准格式
供参考
#include <stdio.h>
void fun1(int n)
{
int sum=0,s;
for(int i=1;i<=n;i++)
{
s=1;
for(int j=1;j<=i;j++)
{
s*=j;
}
sum+=s;
}
printf("fun1: %d\n",sum);
}
void fun2(int n)
{
int sum=0,s=1;
for(int i=1;i<=n;i++)
{
s*=i;
sum+=s;
}
printf("fun2: %d\n",sum);
}
int fun3b(int n)
{
if(n==1)
return 1;
return n*fun3b(n-1);
}
void fun3(int n)
{
int sum=0;
for(int i=1;i<=n;i++)
{
sum+=fun3b(i);
}
printf("fun2: %d\n",sum);
}
int main()
{
int n=5;
fun1(n);
fun2(n);
fun3(n);
return 0;
}