gpt4 book ai didi

在C中使用递归计算pi值

转载 作者:行者123 更新时间:2023-11-30 14:59:06 25 4
gpt4 key购买 nike

所以我尝试使用递归计算 pi 的值。我的代码如下所示:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <malloc.h>

double pi (int n){
double s = 0;
s = s + 4 * ( pow(-1,n+1 ) * (1/(2*n-1) ) );
if( n > 0 ) {
pi( n - 1 );
}
return s;
}

int main(void) {

int n,i;
float *A;
scanf("%d", &n);
A = (float*)malloc( n *sizeof(float) );
for( i = 0 ; i < n; i++ ) {
A[i] = pi( i + 1 );
}
for( i = 0; i < n; i++ ) {
printf( "%f\n", A[i] );
}

return 0;
}

对于 n = 1 的值,它返回预期的答案,pi = 4 ,但对于任何其他值,它计算出 pi = 0 。有人愿意解释一下原因吗?

最佳答案

使用s = s + 4 * ( pow(-1,n+1 ) * (1.0/(2*n-1) ) );
而不是 s = s + 4 * ( pow(-1,n+1 ) * (1/(2*n-1) ) );
因为 if n=2(1/(2*n-1)) 部分将给出 1/3 ,并且作为 >1和3都是整数,结果将转换为整数,即0,这就是为什么你得到0。

关于在C中使用递归计算pi值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43011698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com