计算s=1+2!+3!+……+n!

dragon26194187 2008-07-25 01:40:24
以下函数的功能是计算s=1+2!+3!+……+n!,请填空。
double fun(int n)
{double s=0.0,fac=1.0;
int i;
for(i=1;i<=n;i++)
{ fac= ;
s=s+fac;
}
return s;
}
...全文
3033 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
zairenjian_1 2008-07-28
  • 打赏
  • 举报
回复
n*fun(n-1)
wuhao198411 2008-07-28
  • 打赏
  • 举报
回复
搭车问一句:n大于多少的时候s的值会超出double的范围?
wuroy27496 2008-07-28
  • 打赏
  • 举报
回复
递归

fac=fac*n

不过你这种递归,我觉得不太明了```

用 函数名 来递归 那样更好,习惯也好,别人也容易看懂```
华亭真人 2008-07-27
  • 打赏
  • 举报
回复
.....
bxx5203344 2008-07-27
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 hrfcap 的回复:]
//递归不到万不得已不要用,太耗内在了
long int fun(int n)
{
if (n==0 ¦ ¦n==1)
return 1;
else
return n*fun(n-1);
}
[/Quote]
richbirdandy 2008-07-27
  • 打赏
  • 举报
回复
哼哼 即使用double n到大几十的时候也会悲剧的 不如对n大小限定下
hrfcap 2008-07-27
  • 打赏
  • 举报
回复
//递归不到万不得已不要用,太耗内在了
long int fun(int n)
{
if (n==0||n==1)
return 1;
else
return n*fun(n-1);
}
hrfcap 2008-07-27
  • 打赏
  • 举报
回复
long int fun(int n)
{
int i,sum=0,temp=1;

for(i=1;i<=n;i++)
{
temp*=i;
sum+=temp;
}
return sum;
}
cprime 2008-07-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xxxiaoxiami 的回复:]
double fun(int n)
{double s=0.0,fac=1.0;
int i;
for(i=1;i <=n;i++)
{ fac= fac*i ;
s=s+fac;
}
return s;
}

这也太那个那了把 哈哈
[/Quote]
这个是对的吧
arong1234 2008-07-26
  • 打赏
  • 举报
回复
把向别人请教当作理所当然得事情,比不懂还可怕。不是说学习过程中不能问问题,而是现在的初学者太容易问问题了,问的问题太容易了
arong1234 2008-07-26
  • 打赏
  • 举报
回复
有些答案要是问出来就没有进步了,必须得自己想出来,这么个问题你看完教科书应该能想出来。如果这都想不出来,估计很难学好软件得

[Quote=引用 4 楼 fastso 的回复:]
人家不懂不可以问么,这话说的,谁刚开始就是高手
[/Quote]
JIGSONG 2008-07-26
  • 打赏
  • 举报
回复
给一个完整版:

#include <iostream.h>
double fac(int m)
{
double k;
if(m==1)
return 1;
else
return k = m*fac(m-1);
}

double s(int n)
{
double sum = 0.0;
for(int i=1; i<=n; i++)
{
sum = sum + fac(i);
}
return sum;
}

int main()
{
int n;
cin>>n;
cout<<"值为:"<<s(n)<<endl;
return 1;
}
hyram 2008-07-26
  • 打赏
  • 举报
回复
看不懂。。。
夹心饼干 2008-07-26
  • 打赏
  • 举报
回复
fac=fac*i,其实道理很简单
但是楼主要对n的范围有个评估,不能让得到的S结果超出了double的精度范围
e_sharp 2008-07-26
  • 打赏
  • 举报
回复
double fun(int n) 
{
double s=0.0,fac=1.0;
int i;
for(i=1;i <=n;i++)
{
fac=i*fac; //不能是n
s=s+fac;
}
return s;
}
taipingyang123456 2008-07-26
  • 打赏
  • 举报
回复
感觉也可以这样!明显一点的递归!

double fun(int n)
{
double s=0.0,fac=1.0;
int i;
for(i=1;i <=n;i++)
{
fac=i*fun(i-1); ///here ;
s=s+fac;
}
return s;
}

zfjsw 2008-07-25
  • 打赏
  • 举报
回复
fac=fac*n 就是递归
zfjsw 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 HelloDan 的回复:]
C/C++ code
double fun(int n)
{double s=0.0,fac=1.0;
int i;
for(i=1;i <=n;i++)
{ fac=fac*n; ///here ;
s=s+fac;
}
return s;
}
[/Quote]

that is the answer!
yuhaozx 2008-07-25
  • 打赏
  • 举报
回复
用递归思想
Gump_BlueSky 2008-07-25
  • 打赏
  • 举报
回复
fac = fac * n;
加载更多回复(17)

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧