0

我要根据阿基米德方程创建一个 pi 近似值。我必须使用 for 模式和递归模式来这样做。在 for 模式下,我已经创建了像上面这样的东西:

  double Pi_approximation(double r, double L){

   int i;
   double fin;
   double y;

   for(i=1; i<4; i++){

           y =sqrt(2*((r*r) - r*(sqrt(4*((r*r) - (L)))))); 

           L = y;
           printf("%f \n", L);
   }

   return y;
}

我的问题在 for 的第二个循环中。在第一个 y 中正常计算,但在第二个循环中,当我打印 y 和 L 时,它会打印出他们的指针!任何想法?

4

2 回答 2

4

很难确定发生了什么,但无论如何我都会猜测一下!您传递给其中一个sqrt()调用的值很可能是负数。当这种情况发生时,y(因此L)将是NaN。然后输出将取决于编译器。例如在我的编译器上,输出是:

-1.#IND00
于 2012-03-06T15:03:38.363 回答
0

您可能在其他部分因内存泄漏或类似情况而损坏了代码……仅此代码似乎就可以工作。

于 2012-03-06T15:08:53.510 回答