当有2个或更多递归函数写入togeather时程序是如何执行的?

Sam*_*kar 1 c++ recursion function

如何return((count-2)+(count-1))在以下cpp程序中运行?给定代码的ans 是-18.如何在不运行代码的情况下知道ans并且从两个中调用function count(n-2),count(n-1)哪个首先被调用,如何确定?

#include <iostream>
using namespace std;
int count(int n);
int main() {
    int n, m;
    n = 4;
    m = count(n);
    cout << m;
}

int count(int n)
{
    if (n<0)
    {
        return n;
    }
    else
    {
        return (count(n - 2) + count(n - 1));
    }
}
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 6

操作员的左侧和右侧之间没有排序+.那么首先评估哪一个是未知的(并留给编译器).

解决问题的唯一方法是逐步思考他逐行编码,逐个语句,在调试器中通过表达式表达.

但是,由于每个递归调用不依赖于任何副作用,因此它们可以彼此独立地执行,因此顺序无关紧要,因为结果将始终相同.

  • 您可能想要添加,如果该调用是递归的或不是在这里无关紧要. (3认同)
  • @SamihanJawalkar和程序一样.你知道`count(4)`是`count(2)+ count(3)`,所以你弄清楚`count(2)`和`count(3)`是什么并将它们加在一起. (2认同)