递归方式求s=(1/√1)-(1/√2)+(1/√3)-(1/√5)+(1/√8)-…的前n项和

int f(int n)
{
if (n == 1)
return 1;
else if (n == 2)
return 2;
else
return f(n - 1) + f(n - 2);
}

double fun(int n)
{
int i = 0;
double sum = 0;
for (i = 1; i <= n; i++)
{
sum = sum + 1 / sqrt(f(i)) * pow((-1), (i - 1));
}
return sum;
}

int main()
{
int n;
double s;
scanf("%d", &n);
s = fun(n);
printf("%lf", s);
return 0;
}
这是我的思路
请问怎么用递归的方法只构造一个函数就能实现求该数列的前n项和呢

n=1的时候截至,不等于1的时候,return flag *1.0/sqrt(n)+ fun(n-1)
代码如下:

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

double fun(int start,int end,int a,int b)// 0 end 0 1
{
    int flag = 1;
    static double sum = 0;

    if(start%2==0)
        flag = -1;
    else
        flag = 1;

    if(start <= end)
    {
        sum = sum + flag*1.0/sqrt((double)b) + fun(start+1,end,b,a+b);
    }
    return sum;
}



int main()
{
    int n;
    double sum = 0;
    scanf("%d", &n); //输入n的值
    sum = fun(1,n,1,1);
    printf("%lf\n", sum);
    return 0;
}