递归返回意外输出

recursion returning unexpected output

我从 test(2,8) 开始

我认为输出应该是 4 7 相反,我得到 6 6 4 7 因为 p1 = p2 即 6 = 6 不应执行 cout 语句。 为什么我看到的是 6 6 ?

 using namespace std;

 void test(int p1, int p2);

  void  main()
  {
     test(2, 8);
     return ;
   }


  void  test(int p1, int p2)
  {
   if (p1 != p2)
   {
    p1 = p1 + 2;
    p2 = p2 - 1;
    test(p1, p2);
    cout << p1;
    cout << p2;
   }
  }

在第一次调用测试时 p1 变为 4 而 p2 变为 7。但是在打印之前我们再次进入递归,这次 p1 变为 6,p2 也变为 6。我们再次调用递归,但因为 p1p2 it returns 不打印任何东西(不进入 if 条件)。然后它打印 6 6 并且当它 returns 到最高层调用测试函数时它打印 4 7。所以输出是 6 6 4 7.