我将基于阿基米德方程创建一个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时,它打印我的指针!有什么想法吗?
答案 0 :(得分:4)
很难确定发生了什么,但无论如何我都会猜测!您传递给其中一个sqrt()
来电的价值很可能是负数。发生这种情况时,y
(以及L
)将为NaN
。然后输出将依赖于编译器。例如,在我的编译器上,输出是:
-1.#IND00
答案 1 :(得分:0)
你可能在内存泄漏或类似的其他部分中损坏了代码...... 单独的代码似乎有效。