gpt4 book ai didi

c - 如何使用 C 中的递归计算正弦级数(泰勒)的 x 值?

转载 作者:行者123 更新时间:2023-11-30 20:56:02 25 4
gpt4 key购买 nike

(C) 计算序列

y = x - x3/3! + x5/5! - x7/7! + .....

其中停止标准是

| xi/i! | <= 0.001

我尝试过的:

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

int fact(int x){
if(x>1){
return x * fact(x-1);
}
else {
return 1 ;
}
}

int main () {
int x , i=1 , sign=1 ;
float result ;
scanf("%d",&x);
while(abs(pow(x,i)/fact(i))>0.001){
result += sign*(pow(x,i)/fact(i));
i+2;
sign = sign * -1 ;
}
printf("result= %f\n",result);
return 0 ;
}

问题是当我输入 90 ...输出应该是 1 ...(就像 sin(x) )我得到了不同的输出

最佳答案

代码(至少)错过了初始化结果

改变

float result;

float result = 0.f;
<小时/>

还有

i+2;

是 NOP(无操作)。它什么结果也没有。它将 2 添加到 i 中,并且不会将结果分配给任何内容,而是“遍历”结果。

要将i增加2,请执行以下操作:

i = i + 2;

i += 2;
<小时/>

此外^2使用abs()也不起作用,因为它返回int

使用fabs()获取浮点值。

或者根本不使用它,因为它的参数在这里永远不会为负。

<小时/>

最后的建议是,优先使用 double 而不是 float,因为 float 的准确度有限。

关于c - 如何使用 C 中的递归计算正弦级数(泰勒)的 x 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28914095/

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