c语言用递归法求1!+2!+3!+4!+5!+6!

就到6! 不要到n的

思路:先用递归求出一个数的阶乘,接着for循环累加求和。

参考代码:

#include<stdio.h>
int fun(int n){
if(n==1) return 1;//递归结束条件 
return n*fun(n-1);//递归式 

int main()
{
int sum=0,i;
for(i=1;i<=6;i++)//for循环累加求和 
sum+=fun(i);
printf("%d\n",sum); 
return 0;
}
/*
运行结果:
873
*/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-08
main函数调用的时候n传6就是求到6!的和了。
#include "stdafx.h"
#include <stdio.h>
long fac[7]={0};//定义存储阶乘的全局数组
int getFac(int n){//递归求阶乘
if(fac[n]!=0)return fac[n];
else if(n==1){
fac[1]=1;return fac[1];
} else if return fac[n]=n*getFac(n-1);
}

int getSum(int n){//递归求和
if(n<0)return -1;//输入n非法
if(n==0) return 0;
else return getFac(n) + getSum(n-1);
}

int main(int argc, char* argv[])
{
printf("1!+2!+3!+4!+5!+6!=%d\n",getSum(6));//调用
return 0;
}
第2个回答  推荐于2016-08-09
#include<stdio.h>

int f(int x){
if(x==1) return 1;
return x*f(x-1);
}
int main()
{
int sum=0;
for(int i=1;i<=6;i++)
{
sum=sum+f(i);
printf("f(%d)=%d\n",i,f(i));
}
printf("sum=%d",sum);
return 0;
}本回答被提问者和网友采纳
第3个回答  2012-05-08
void main()
{int sum=0;
int temp=1;
for(int n=1;n<7;n++)
{
for(int m=1;n<m+1;m++)
{
temp*=m;
}
sum+=temp;
temp=1;
}
printf("1!+2!+3!+4!+5!+6!=%d",sum);
}
第4个回答  2012-05-08
// fac的作用是求i的阶乘
int fac(int i)
{
if(i == 1)
return 1;
else
return i*fac(i-1);
}

int main()
{
int i = fac(1)+fac(2)+fac(3)+fac(4)+fac(5)+fac(6);
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网