为什么这种递归方法没有给我2.2833的答案?
double m(int i)
{
if (i == 1)
return 1;
else
return (1/i) + m(i -1);
}
int main()
{
double value=m(5);
cout << value << endl;
return 0;
}
我得到的答案是1?
答案 0 :(得分:1)
因为1/1是1而1/2 = 0(1/3 = 0 ....)
所以我们需要做1.0/(double) i
然后1.0 / 2.0 = 0.5
#include <iostream>
double m(int i)
{
if (i == 1)
return 1;
else
return (1.0/(double) i) + m(i -1);
}
int main(int,char**) {
double value=m(5);
std::cout << value << "\n";
return 0;
}