Почему этот рекурсивный метод не дает мне ответа 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;
}
1.0
- это двойное число,1.0f
- это число с плавающей запятой,1
- это1.0f
число, вы должны посмотреть неявные приведения для фундаментальных типов. Не забудьте поднять голос и принять ответ :)