Pi近似与阿基米德方程

时间:2012-03-06 14:58:01

标签: c pi

我将基于阿基米德方程创建一个pi近似。我必须使用for mode和recursive模式。在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时,它打印我的指针!有什么想法吗?

2 个答案:

答案 0 :(得分:4)

很难确定发生了什么,但无论如何我都会猜测!您传递给其中一个sqrt()来电的价值很可能是负数。发生这种情况时,y(以及L)将为NaN。然后输出将依赖于编译器。例如,在我的编译器上,输出是:

-1.#IND00

答案 1 :(得分:0)

你可能在内存泄漏或类似的其他部分中损坏了代码...... 单独的代码似乎有效。