我一直在寻找计算根的算法,然后发现了巴比伦算法。我非常喜欢它,因为它简单易懂。但问题是它只能计算平方根,而我正在尝试编写一个函数可以计算任意幂次的根,只考虑正整数。
以下是该函数:
double functions::rot(double x, double y) {
double z = x;
double w = 1;
double e = 0.000001;
while (z - w > e){
z = (z + w) / 2;
w = x / z;
}
return z;
}
y是指数。有没有办法修改这个算法,使得y成为根的指数?比如,如果y=3,那么就需要对三次方根进行运算。
w = x/z
更改为w=x/(z*z)
,你会得到什么结果? - n. m.w = x/z
更改为w = x/(z*z)
,当x = 64时,会得到3.812388。 - William Thomasz - w > e
更改为std::abs(z-w) > e
。 - n. m.