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

就到6!不要到n的... 就到6! 不要到n的 展开
 我来答
985967518
推荐于2017-09-02 · 知道合伙人教育行家
985967518
知道合伙人教育行家
采纳数:18027 获赞数:109859
14年本科毕业于河南理工大学,至今就读于河南理工大学攻读硕士学位,从事编程学习已有5年。

向TA提问 私信TA
展开全部

思路:先用递归求出一个数的阶乘,接着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
*/
slxb
2012-05-08 · 超过21用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:63.2万
展开全部
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
紫薇参星
科技发烧友

推荐于2016-08-09 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3542万
展开全部
#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;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yxj120600
2012-05-08 · TA获得超过246个赞
知道小有建树答主
回答量:471
采纳率:0%
帮助的人:274万
展开全部
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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Bk0X
2012-05-08 · TA获得超过9413个赞
知道小有建树答主
回答量:1217
采纳率:60%
帮助的人:663万
展开全部
// 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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式