递归跟踪输出的系列和

时间:2013-10-07 00:15:13

标签: c++ recursion

为什么这种递归方法没有给我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 个答案:

答案 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;
}