本题要求实现一个函数,计算下列简单交错幂级数的部分和:
f(x,n)=x−x2+x3-x4 +⋯+(−1)n−1 xn 函数接口定义: double fn( double x, int n ); 其中题目保证传入的n是正整数,并且输入输出都在双精度范围内。函数fn应返回上述级数的部分和。建议尝试用递归实现。
裁判测试程序样例: #include <stdio.h>
double fn( double x, int n );
int main() { double x; int n;
scanf("%lf %d", &x, &n); printf("%.2f\n", fn(x,n)); return 0;}
/* 你的代码将被嵌在这里 */ 输入样例: 0.5 12 输出样例: 0.33
方法1:
double fact(double x,int n); double fn( double x, int n ){ double sum=0; int flag=1; for(int i=1;i<=n;i++){ sum+=flag*fact(x,i); flag=-flag; } return sum; } double fact(double x,int n){ if(n==1) return x; else return x*fact(x,n-1); }方法2:
/* 你的代码将被嵌在这里 */ //n=1,f(x,1)=x; //n=2,f(x,2)=x-x*x=x*(1-x); //n=3,f(x,3)=x-x*x+x*x*x=x*(1-x+x*x)=x*(1-x*(1-x)); //即,n=i时,f(x,i)=x*(1-f(x,i-1)); (i>1,i属于N) double fn( double x, int n ){ if(n==1) return x; else return x*(1-fn(x,n-1)); }