注册 登录
编程论坛 C++教室

新手求助(输出结果显示出现非法浮点数运算)

衣冠禽兽 发布于 2014-12-25 22:12, 438 次点击
问题程序如下:
#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);
}

求前辈们指点一下,谢谢。
4 回复
#2
yangfrancis2014-12-25 23:03
sum_p=sum_p*x;在x较大的情况下,这种语句循环次数多了有可能超出double类型的取值范围。你先检查一下有没有这种问题。还有一点。你在递归调用时只调用了calculate(x-1,sum);还没有接受其返回值传递回来,估计即使运行成功也不会出现递归的效果。
#3
衣冠禽兽2014-12-25 23:47
谢谢
#4
rjsp2014-12-26 09:37
你的 calculate 函数实现,完全不知所云
结尾连个return都没有;calculate(x-1,sum)不修改任何东西,你执行它有何目的?

最重要好的是,你得告诉别人,你这段代码想实现什么样的功能。
#5
衣冠禽兽2014-12-27 08:37
回复 4楼 rjsp
错误已修正,新手刚学递归,犯了点低级错误,谢谢你的回复...
1