利用函数递归求 1+1⼀2+1⼀3+1⼀4+…+1⼀n

2024-12-21 21:17:05
推荐回答(3个)
回答1:

#include
double fac(int num)// 因为1/n不是整数,所以这里和下面求和的部分都要用double
{
double sum;
if(num <= 1)
sum=num;
else
sum =(1.0/num)+fac(num-1); //double和int做除法的时候,如果前后都被判断为整数会自动四舍五入,所以这里要用1.0
return sum;
}
void main()
{
int n;
double s;
printf("n=");
scanf("%d",&n);
s=fac(n);
printf("%lf",s);
}

回答2:

double fun(double n)
{
static double ret= 0;
ret+= 1/n;
if(n==1)
return ret;
return fun(n-1);
}
void main()
{
int n;
printf("请输入数值n:");
scanf("%d", &n);
printf("%lf", fun(n));
}

回答3:

大概就这个样子,再调试一下
#include
double fun(int n)
{
if(n==1)
{ retrun 1;}
else
{return fun(n-1)+1.0/n;}
}
int main()
{
int a;
printf("Input an integer: ");
scanf("%d",&a);
printf("1+1/2+……+1/%d=%lf\n",a,fun(a));
return 0;
}