| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 949 人关注过本帖
标题:帮我看看这个代码有什么呢问题,我 return 弄不太清楚
只看楼主 加入收藏
wjhjcz
Rank: 1
等 级:新手上路
帖 子:17
专家分:4
注 册:2014-5-23
结帖率:40%
收藏
已结贴  问题点数:18 回复次数:13 
帮我看看这个代码有什么呢问题,我 return 弄不太清楚
题目是:
e=1+1/1!+1/2!+1/3!+...

但这个公式会随着项数的不同计算出近似的e的值,我们现在的任务时输入最后一项的值
如100,就加到1/100!,然后输出e的值(保留10位小数)


#include <iostream>
#include<cmath>
#include<cstdio>
#include<iomanip>
using namespace std;
int jc (int n);
int main()
{
  double a,b;
  cin>>a;
  for(int i=0;i<=a;i++){
      b=1.0/jc(i)+b;
  }
  cout<<setprecision(10)<<std::fixed;
  cout<<b;
    return 0;
}
int jc(int n){
long  long m=1;
    for(int i=1;i<=n;i++){
          m=i*m;
    }
    if(m!=0){return m;}
    else {return 1;}
    }
为什么我调试时,它都不自上而下执行呢
搜索更多相关主题的帖子: include return double 
2014-05-24 16:40
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
收藏
得分:4 
我想你运行的结果应该是1吧
好好看看变量的类型

举个例子

int jc(int n){

if(m!=0){return m;}

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-05-24 16:58
wjhjcz
Rank: 1
等 级:新手上路
帖 子:17
专家分:4
注 册:2014-5-23
收藏
得分:0 
回复 2 楼 funyh250
我只是想把i的阶乘算出来,然后代到主程序中的
   ‘b=jc(i)+b'中去,
        怎么改呢?
2014-05-24 17:23
一根牙签
Rank: 2
等 级:论坛游民
帖 子:7
专家分:13
注 册:2014-5-21
收藏
得分:4 
以下是引用wjhjcz在2014-5-24 16:40:12的发言:

题目是:
e=1+1/1!+1/2!+1/3!+...
 
但这个公式会随着项数的不同计算出近似的e的值,我们现在的任务时输入最后一项的值
如100,就加到1/100!,然后输出e的值(保留10位小数)
 
 
#include  
#include
#include
#include
using namespace std;
int jc (int n);
int main()
{
  double a,b;
  cin>>a;
  for(int i=0;i<=a;i++){
      b=1.0/jc(i)+b;
  }
  cout<

错误1 double a,b; //b没初始化 应该 b=1;
错误2 long  long m=1; //没long long类型吧?
2014-05-24 19:06
一根牙签
Rank: 2
等 级:论坛游民
帖 子:7
专家分:13
注 册:2014-5-21
收藏
得分:0 
程序代码:
//方法1
int fact_1(int pow)
{
    if(!pow)
        return 1;    //    0的阶乘是1
    if(pow<0)
        return -1;    //    负数没阶乘
    int res=1;
    for(int ix=1;ix<=pow;++ix)
        res *=ix;
    return res;
}
//方法2
int fact_2(int pow)
{
    if(pow<0)
        return -1;
    static int res=1;//弄成静态变量,不用老是分配内存
    if(pow==0)
        return 1;
    res=pow*fact_2(pow-1);
    return res;
}

我也才刚开是学C++,一起努力
2014-05-24 19:31
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
收藏
得分:0 
for(int i=1;i<=a;i++){
      b+=1.0/jc(i);
  }
  cout<<setprecision(10)<<std::fixed;
  cout<<b;
    return 0;
}
long jc(int n){
   long m=1;
    for(int i=1;i<=n;i++){
          m=i*m;
    }
    if(m!=0){return m;}
    else {return 1;}
    }

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-05-24 20:05
wjhjcz
Rank: 1
等 级:新手上路
帖 子:17
专家分:4
注 册:2014-5-23
收藏
得分:0 
回复 6 楼 funyh250
我i=1;怎么错了?不是从1开始吗?
2014-05-24 20:33
wjhjcz
Rank: 1
等 级:新手上路
帖 子:17
专家分:4
注 册:2014-5-23
收藏
得分:0 
回复 5 楼 一根牙签
那个 (! pow)什么意思?
     return -1 是将m返回 值-1中?
    res * 1x什么意思
  fac_2(pow-1)又是什么意思?
还有什么是静态变量?
我初学,只晓得皮毛。。。。。
2014-05-24 20:39
一根牙签
Rank: 2
等 级:论坛游民
帖 子:7
专家分:13
注 册:2014-5-21
收藏
得分:0 
以下是引用wjhjcz在2014-5-24 20:39:39的发言:

那个 (! pow)什么意思?
     return -1 是将m返回 值-1中?
    res * 1x什么意思
  fac_2(pow-1)又是什么意思?
还有什么是静态变量?
我初学,只晓得皮毛。。。。。

如果你是初学者,我解释给你听,还不如自己看书,因为这些东西,在书上都有,而我也是初学者,我所学都来自书本。
简单提示一下:
!pow  如果你不懂 ,请参看书本 if的用法。
return -1; 这里没意义,因为只有大于等于0的整数才有阶乘,而我假设传递的参数是负数就等于是错误或异常,你也可以改成 return 0;
我这样做只是为了让程序可以根据调用函数后的返回值判断是否出错。 例如返回值是-1,就可以知道出错的原因传递了负数。

我提供给你的 方法2 采用是递归算法,如果你还不懂,可以先不学,这些内容书本上都有,等你学到的时候,再回来看吧。
2014-05-24 22:01
sean9506
Rank: 1
等 级:新手上路
帖 子:5
专家分:9
注 册:2014-4-2
收藏
得分:4 
#include <iostream>
 #include<cmath>
 #include<cstdio>
 #include<iomanip>
 using namespace std;
 int jc (int n);
 int main()
 {
   double a,b=0;
   cin>>a;
   for(int i=0;i<=a;i++){
       b=1.0/jc(i)+b;
   }
   cout<<setprecision(10)<<std::fixed;
   cout<<b;
     return 0;
 }
 int jc(int n=1){
     int m=1;
     for(int i=1;i<=n;i++){
           m*=i;
     
     }
     if(n!=0){return m;}
     else {return 1;}
     }
试试这个代码;
2014-05-25 11:32
快速回复:帮我看看这个代码有什么呢问题,我 return 弄不太清楚
数据加载中...
 
   



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

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