题意:
计算一个浮点数的立方根,保留一位小数。
方法一:
二分
思路:初始化左右区间 l , r 。
如果大于给定数,则 r = mid ;否则 l = mid 。
最后,l 即为答案。
#include <bits/stdc++.h>
using namespace std;
int main(){
double x;
cin >> x;
double l=-20,r=20,mid;
while(fabs(r-l)>0.001){//确保精度,保留一位小数
mid=(l+r)/2;
if(mid*mid*mid>=x)//如果大于给定数,则r=mid
r=mid;
else//否则l=mid
l=mid;
}
printf("%.1f\n",l);
return 0;
}
时间复杂度:
空间复杂度:![]()
方法二:
牛顿迭代法
思路:
#include <bits/stdc++.h>
using namespace std;
int main(){
double y,x=1;
cin >> y;//输入
while(fabs(x*x*x-y)>0.001){//牛顿迭代法
x=x-(x*x*x-y)/(3*x*x);
}
printf("%.1f\n",x);
return 0;
}
时间复杂度:
空间复杂度:![]()



京公网安备 11010502036488号