c++ - 添加 2 个递归函数是如何工作的

标签 c++

递归函数如何返回 printCountRec(dist-1) + printCountRec(dist-2);在以下代码中工作。按照我的逻辑,printCountRec(dist-1) 函数调用将返回 1,printCountRec(dist-2) 将通过添加这两个函数返回 0,答案应该是 1+0,即 1,但我得到的答案是 3。我不是得到它。

计算覆盖一段距离的方法数的程序; 代码如下-

#include <iostream>
using namespace std;


int printCountRec(int dist)
{
    // Base cases
    if (dist<0)    return 0;
    else if (dist==0)  return 1;

    // Recur for all previous 3 and add the results
   else   return printCountRec(dist-1)  + printCountRec(dist-2);

}

int main()
{
    int dist = 3;
    cout << printCountRec(dist);
    return 0;
}

最佳答案

这就是我如何遵循你的递归:

printCountRec(-1) = 0
printCountRec(0) = 1
printCountRec(1) = printCountRec(0) + printCountRec(-1) = 1
printCountRec(2) = printCountRec(1) + printCountRec(0) = 2
printCountRec(3) = printCountRec(2) + printCountRec(1) = 3

关于c++ - 添加 2 个递归函数是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42954241/

相关文章:

c++ - 为什么写入标准输入有效?

c++ - 在 Clang++ 的 C++17 中不能禁用 RVO/NRVO?

c++ - 如何在自己的类中重载 '+' 和 '<<' 运算符

c++ - 在3ds Max中更新进度条后,环境和效果UI不刷新

c++ - 在 windows 上制作 flex.exe

c++ - 检查子集是否包含给定子集列表的快速方法

c++ - 如何在wxRadioBox中添加滚动条?

c++ - 在 C++ 中将数据作为 void* 传递

c++ - Qt 有 gsl::span 的模拟吗?

C++多重定义错误