pta中 递归求简单交错幂级数的部分和

c语言中不用pow函数的思路
我写的是

img

double fn( double x, int n){

int sum = 0;

if (n == 1)
    sum = x;
else 
for(int i = 1; i <= n; i++){
    sum = x;
    if(i % 2 == 0){
        for(int j = 1; j < i; j++){
            x*=x;
        }
        sum = sum - x;}
    else if (i % 2 != 0) {
        for(int j = 1; j < i; j++){
            x*=x;
        }
        sum = sum + x;}
   
}
return sum;

}```

你的代码没有用到递归
这样写即可

#include <math.h>
double fn(double x, int n) {
    if (n == 1) return x;
    return fn(x, n - 1) + pow(-1, n - 1) * pow(x, n);
}

供参考:

#include<stdio.h>
double fn(double x,int n);
int main()
{
    double x;
    int n;
    
    scanf("%lf %d", &x, &n);
    printf("%.2f", fn(x, n));

    return 0;
}
/*你的代码将被嵌在这里*/
double quickerpower(double x, int n)
{
    if (n == 0)
        return 1.0;
    if (n % 2 == 0)
        return quickerpower(x, n / 2) * quickerpower(x, n / 2);
    else 
        return x * quickerpower(x, n - 1);
}
double fn(double x,int n)
{
    if (n == 1)
        return x;
    return fn(x, n-1) + quickerpower(-1, n-1) * quickerpower(x, n);
}