33,311
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include<iostream>
using namespace std;
double sum=0;
int FenZi=1;
int FenMu=0;
double FenShuLianJia(int n)
{
if(n>0)
{
FenMu=FenMu+1;
FenZi=FenMu+1;
sum+=FenZi/FenMu;
return FenShuLianJia(n-1);
}
else
{
return sum;
}
}
int main()
{
int CiShu=0;
cin>>CiShu;
cout<<FenShuLianJia(CiShu)<<endl;
return 0;
}
#include "stdafx.h"
#include<iostream>
using namespace std;
double sum=0;
int FenZi=1;
int FenMu=0;
double FenShuLianJia(int n)
{
if(n>0)
{
FenMu=FenMu+1;
FenZi=FenMu+1;
sum+=FenZi/FenMu;
return FenShuLianJia(n-1);
}
else
{
return sum;
}
}
int main()
{
int CiShu=0;
cin>>CiShu;
cout<<FenShuLianJia(CiShu)<<endl;
return 0;
}
首先第一个错误:
你的分子和分母是同一个数,我已经用红色给你标记,所以分数除下来每次都是1,所以加起来自然等于1,2,3,4,5
第二个错误,
你这里的 sum+=FenZi/FenMu; 中,分子和分母都是整数,除下来之后会默认转为小数,所以,改为
sum+=(double)FenZi/FenMu;
改了这两点,你的程序就没问题了int i= 1;
int j = 2;
int k = i / j;
//k == 0
float f = (float)i / j;
//f == 0.5
使用后面那个。