•计算一个数字的立方根,不使用库函数
立方根的逼近迭代方程是 y(n+1) = y(n)*2/3 + x/(3*y(n)*y(n)),其中y0=x. 求给定的x经过n次迭代后立方根的值。
详细描述:
•接口说明
原型:
public static double getCubeRoot(double input)
输入:double 待求解参数
返回值:double 输入参数的立方根
待求解参数 double类型
输入参数的立方根 也是double类型
216
6.0
已AC代码:
#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
double getCubeRoot(double input)
{
if(input == 0) return (double)0;
double pre = 0;
double res = 1;
while(fabs(res-pre) > 0.000001) // 此处需用math.h中的fabs, 而不是abs
{
pre = res;
res = (2*res + input/(res*res) )/3; // 迭代公式
}
return res;
}
int main()
{
double in;
while(cin>>in)
{
double res;
res = getCubeRoot(in);
printf("%.1f", res); // 如果需要四舍五入保留1位小数, 最后应该用res+0.05, n位小数则需加5*pow(0.1, n+1)
}
return 0;
}
知识复习: abs()主要用于对求整数的绝对值,在“stdlib.h”(或 <cstdlib>)头文件里面。 而fabs()主要是求精度要求更高的double、float型的绝对值,只在<cmath>头文件里。 两者在只#include<cmath>时都可以使用。
相关链接: http://blog.csdn.net/lzuacm/article/details/51335995 http://ilovers.sinaapp.com/article/迭代法求平方根和立方根 http://blog.csdn.net/never_cxb/article/details/47734519