一、递归
//递归
#include <stdio.h>
#include <string.h>
void main(){
int n;
int fun(int n);
printf("请输入n=");
scanf("%d",&n);
printf("%d\n",fun(n));
}
int fun(int n)
{
int m,sum=0,ans=1;
for(m=1;m<=n;m++)
{
ans=ans*m;
sum=sum+ans;
}
n=n-1;
if(n>0)
fun(n);//递归
return sum;
}
二、非递归
//非递归
#include <stdio.h>
#include <string.h>
void main(){
int i,n,sum,ans;
sum=0;ans=1;
printf("请输入n=");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
ans=ans*i;
sum=sum+ans;
}
printf("%d\n",sum);
}