| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1607 人关注过本帖
标题:函数,编写函数计算N!,调用该函数计算下式的值
只看楼主 加入收藏
不啰嗦
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-11-18
结帖率:0
收藏
已结贴  问题点数:10 回复次数:2 
函数,编写函数计算N!,调用该函数计算下式的值
S=1+1/(1+4!)+1/(1+4!+7!)+...+1/(1+4!+7!+...+19!)
题目如上,求大佬们教教怎么写
搜索更多相关主题的帖子: 函数 编写 调用 计算 
2019-11-18 14:53
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
打开计算器,计算 ln(19!)/ln(2)=56.7,所有需要一个至少57bits有效数的类型。(double的有效位是53bits)
程序代码:
//s = 1/(1!)
//  + 1/(1!+4!)
//  + 1/(1!+4!+7!)
//  + ……
//  + 1/(1!+4!+7!+...+19!)

#include <stdio.h>

int main( void )
{
    unsigned long long f1 = 1;
    unsigned long long f2 = 0;
    double f3 = 0;
    for( unsigned i=1; i<=19; ++i )
    {
        f1 *= i;
        if( (i+2)%3 == 0 )
        {
            f2 += f1;
            f3 += 1.0/f2;
        }
    }
    printf( "%f\n", f3 );
}

当然了,还取决于你希望结果的精度范围,如果只需要小数点后两位,那double自然也合适。

2019-11-18 15:31
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:5 
程序代码:
#include<stdio.h>

 long long jiecheng(int m)

 {
  long long x=1;
  int i;
  for(i=1;i<=m;i++)
      x=x*i;
  return x;

 }

 float jc(int k)

 {
  float i,x,y,S=1.0;
  int m;
  long long a,s=1;
  for(m=4;m<=k;m=m+3)
  {
   a=jiecheng(m);
   s+=a;
   y=1.0/s;
   S+=y;
  }
  return S;

 } 

 int main()

 {
   float s;
   s=jc(1+3*1);
   printf("%f",s);
   return 0;

 }  
2019-11-18 15:53
快速回复:函数,编写函数计算N!,调用该函数计算下式的值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019401 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved