#include<stdio.h>
//递归实现:原理是f(n)=f(n-1)+n!=f(n-1)+n*(n-1)!=f(n-1)+n*(f(n-1)-f(n-2)) (最终把!去掉转换成函数fun(n...))
int fun(int n)
{
if(n<=0)
{
return 0 ;
}
else if(n==1)//n==1,2是递归的出口
{
return 1;
}
else if(n==2)
{
return 3;//1+2就是3
}
else
{
return fun(n-1)+n*(fun(n-1)-fun(n-2));
}
}
//for循环实现
int fun2(int n)
{
int i,j;
int sum=0;
int temp ;
for(i=1;i<=n;i++)
{
temp = i;
for(j=1;j<i;j++)
{
temp = temp*j;
}
sum = sum+temp;
}
return sum;
}
//递归加上while循环实现
int fun3(int n)
{
int sum = n;
int step = n-1;
if(n==1)
{
return 1;
}
while(step>=1)
{
sum*=step;
step--;
}
sum+=fun3(--n);
return sum;
}
int main()
{
printf("递归实现:1!+2!+...+10!=%d\n",fun(10));
printf("双for实现:1!+2!+...+10!=%d\n",fun2(10));
printf("递归加上while循环实现1!+2!+...+10!=%d\n",fun3(10));
return 0;
}
还没有评论,来说两句吧...