我非常惊讶为什么我的代码在第 16512 次迭代中卡住了,尽管它似乎没有语法问题。这是代码:
#include <stdio.h>
/*C version of Newton-Raphson method*/
float sqrt(float num);
main()
{
int i;
for (i = 1; i <= 100000; i++) {
printf("%d: %.3f\n", i, sqrt(i));
}
}
float sqrt(float num)
{
float guess, e, upperbound;
guess = 1;
e = 0.001;
do
{
upperbound = num / guess;
guess = (upperbound + guess) / 2;
} while (!(guess * guess >= num - e &&
guess * guess <= num + e));
return guess;
}
该代码应该使用 Newtonian-Raphson 方法找到从 1 到 100000 的所有数字的平方根,但在第 16152 次迭代之后没有任何反应。如果该信息有帮助,我正在使用 VS2012 的开发人员命令提示符来编译我的脚本。启蒙将不胜感激。