用于计算数字n的平方根的巴比伦算法如下:
a.先猜一个答案guess(可以将n/2作为第一个答案)
b.计算r = n/guess
c.令guess = (guess + r)/2
d.如有必要返回第2步重复多次。步骤2和步骤3重复的次数越多,guess就越接近n的平方根。
写一个程序,输入整数作为n的值,重复执行巴比伦算法,直到guess与前一个guess的误差在1%范围内,将答案作为一个double输出。
代码如下:
#include <iostream>
double babi(int n) {
double guess = n / 2;//以n/2作为第一个答案
double tmp = guess;//获取第一个答案的值
while (1)
{
double r = n / guess;//计算
guess = (guess + r) / 2;//通过这两个步骤,得到一个新的值
if (abs(tmp - guess) < 0.01) {//让第一个答案的值和第二个答案的值比较比较再除于第一个答案的值 < 0.01
break;
}
tmp = guess;//如果不符合if条件,就第二个值赋值给第一个值,再进行判断,知道两个值的差值小于 0.01。
}
return tmp;
}
输出截图: