为什么这个递归方法没有给我 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?
最佳答案
因为 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;
}
关于c++ - 序列的递归跟踪输出总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19215470/