标题:新手求助(输出结果显示出现非法浮点数运算)
只看楼主
衣冠禽兽
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2014-12-25
 问题点数:0 回复次数:4 
新手求助(输出结果显示出现非法浮点数运算)
问题程序如下:
#include<iostream>
using namespace std;
double calculate(double,double);
int main()
{
    double sum=0,x;
    cin>>x;
    cout<<calculate(x,sum);
    system("pause");
    return 0;
}

double calculate(double x,double sum)
{
    int i;
    double sum_p=1;
    if(x==0)
        return sum+1;
    for(i=1;i<=x;i++)
    {   
        sum_p=sum_p*x;
        sum_p=sum_p/i;
    }
    sum=sum+sum_p;
    calculate(x-1,sum);
}

求前辈们指点一下,谢谢。
搜索更多相关主题的帖子: double 
2014-12-25 22:12
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
sum_p=sum_p*x;在x较大的情况下,这种语句循环次数多了有可能超出double类型的取值范围。你先检查一下有没有这种问题。还有一点。你在递归调用时只调用了calculate(x-1,sum);还没有接受其返回值传递回来,估计即使运行成功也不会出现递归的效果。
2014-12-25 23:03
衣冠禽兽
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2014-12-25
得分:0 
谢谢
2014-12-25 23:47
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
你的 calculate 函数实现,完全不知所云
结尾连个return都没有;calculate(x-1,sum)不修改任何东西,你执行它有何目的?

最重要好的是,你得告诉别人,你这段代码想实现什么样的功能。
2014-12-26 09:37
衣冠禽兽
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2014-12-25
得分:0 
回复 4楼 rjsp
错误已修正,新手刚学递归,犯了点低级错误,谢谢你的回复...
2014-12-27 08:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-440377-1-1.html




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

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