c++ - 序列的递归跟踪输出总和

标签 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/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/

相关文章:

c++ - 从类中 move vector (与 2013 编译器相比)

c++ - 在 C++ 中模态来自其他正在运行的线程的消息对话框

c++ - .def 文件等效于 OS X

c++ - vector 大小在 for 循环中填充后返回 0

JavaScript 递归反向字符串

javascript - 如何递归地构建树中每个节点的路径 - JavaScript?

algorithm - 使用递归查找列表的第一个和最后一个元素

python - Python中列表的递归排序函数

php - 在 PHP 中通过树结构递归的特定算法

c++ - 如果在 C++ 中删除了其中一个对象怎么办?