-i在平方根函数中做什么?

时间:2016-10-03 20:40:39

标签: c function loops for-loop

在平方根函数(C中)中,像这样:

double squareRoot(double n) {
   double i, precision = 0.00001;

   for(i = 1; i*i <=n; ++i);   //Integer part

   for(--i; i*i < n; i += precision);  //Fractional part

   return i;
}

这个 - i 部分(第4行)是做什么的?

它工作正常,对于输入24,它给出了4.898980。但是当 - i i 替换时,结果为5.000000。此外,当使用 i - 时,它再次给出4.898980。那么,这是否意味着 - i = i - ?引擎盖下发生了什么?

另外,我没有理解为什么只有 i 在这里就不够了,因为我们已经完成了整数部分。我是新手。请帮忙吗?

1 个答案:

答案 0 :(得分:2)

这是'后退',例如如果你正在做sqrt(50)(7.07 ......)

for(i = 1; i*i <=n; ++i);   //Integer part

然后i将在8结束。但这显然是PAST,其中sqrt值实际上是。所以

for(--i; i*i < n; i += precision);  //Fractional part

将向后移动一步,并有效地以

运行
for(i=7; i*i < n; i += precision);  //Fractional part

然后慢慢地向上移动到接近7.07 ....正如精度允许的那样。