如题所述
{
int i;
double result1 = -1.0;
double result2 = 0.0;
double result = 0;
for(i = 0; i < 2 * n -1; i++)
{
result1 *= -1 * x;
result2 *= i;
}
result = result1 / result2;
return result;
}
int main()
{
int n = 10;
int i = 0;
double x = 1.5;
for(i = 0; i < n; i++)
result += calc(n, x);
}追问
运行不出结果 x=2.5 , n=10 答案为0.598472
麻烦再想象 可否交个朋友啊
你确定答案是0.598472,我算出来的是0.997471.
#include
double calc(int n, double x)
{
int i;
double result1 = 1.0;
int result2 = 1.0;
double result = 0.0;
int sign = -1;
for(i = 1; i < 2 * n; i++)
{
result1 *= x;
result2 *= i;
}
for(i = 1; i < n + 1; i++)
{
sign *= -1;
}
result = sign * result1 / result2;
return result;
}
int main()
{
int n = 2;
int i = 0;
double x = 1.5;
double result = 0.0;
for(i = 1; i < n + 1; i++)
result += calc(i, x);
printf("The result is %lf\n", result);
return 0;
}
是的 你再想下吧
追答你看一下前两项的和是多少,总的和肯定比前两项的和大吧。
int x=2.5,n=10;
double y=0,t=1,t2=1;
for(int i=1;i<n+1;i++){
for(int j=1;j<(2*i-1)+1;j++){
t*=-x; //count x^(2n-1)
t2*=j; //count (2n-1)!
}
i%2==1?y-=t/t2:y+=t/t2; //if n is ood - else +
}追问
你能找出它的迭代公式吗 能把完整的代码写出来吗
追答double calc(int n, double x){
double y=0,t=1,t2=1;
for(int i=1;i<n+1;i++){
for(int j=1;j<(2*i-1)+1;j++){
t*=-x; //count x^(2n-1)
t2*=j; //count (2n-1)!
}
i%2==1?y-=t/t2:y+=t/t2; //if n is ood - else +
}
return y;
}
void main(){
int n = 10;
double x = 2.5;
printf("x=%3.1lf,n=%d,y=%lf",x,n,calc(n,x));
}
公式不是已经给出了吗?
error C2018: unknown character '0xac'
error C2146: syntax error : missing ';' before identifier 't2'
error C2065: 't2' : undeclared identifier
?
double calc(int n, double x){
double y=0,t=1,t2=1;
for(int i=1;i<n+1;i++){
for(int j=1;j<(2*i-1)+1;j++){
t*=-x;
t2*=j;
}
i%2==1?y-=t/t2:y+=t/t2;
}
return y;
}
void main(){
int n = 10;
double x = 2.5;
printf("x=%3.1lf,n=%d,y=%lf",x,n,calc(n,x));
}