天天写算法之Can you solve this equation?

写这段代码的时候遇到一个问题,在下面注释着,就是迭代的过程中,我写成了下面的样子,一直返回nan,后来才发现,每次迭代都返回给上一层,因此这一层,但是上一层却没有返回,因此就w了
double getRes(double left ,double right ,double target ) {     if(getTemp(left)>target||getTemp(right)<target )     {         return -1;     }     double res, mid = (left+right)/2;     if(fabs(getTemp(mid)-target)<1e-5)     {         return mid ;     }     else if(getTemp(mid)<target)     {        res =getRes(mid,right,target );     }else if(getTemp(mid)>target)     {        res =getRes(left,mid,target );     } }

#include <iostream> #include <iomanip> #include<queue> #include<math.h> #include<algorithm> #include<string.h> #include<stdlib.h> #include<stdio.h> #include<iomanip> #include<string.h> #include<sstream> #include<string> #include<queue> #define MAX 5842 //¶¨Ò庯Êý¶Î #define repf(i,a,b) for(int i =(a);i<(b);i++) #define repfe(i,a,b) for(int i =(a);i<=(b);i++) using namespace std; double getTemp(double a) { return 8*pow(a,4)+7*pow(a,3)+2*pow(a,2)+3*a +6 ; } double getRes(double left ,double right ,double target ) { if(getTemp(left)>target||getTemp(right)<target ) { return -1; } double res, mid = (left+right)/2; if(fabs(getTemp(mid)-target)<1e-5) { return mid ; } else if(getTemp(mid)<target) { res =getRes(mid,right,target ); }else if(getTemp(mid)>target) { res =getRes(left,mid,target ); } return res ; } int main() { int num ; double target ,res; cin >> num ; while(num--){ cin >> target ; res =getRes(0.0,100.0,target); if(res == -1 ) { printf("No solution!\n"); }else { printf("%.4lf\n",res); } } return 0 ; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值