递归返回意外输出
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。我们再次调用递归,但因为 p1 与 p2 it returns 不打印任何东西(不进入 if 条件)。然后它打印 6 6 并且当它 returns 到最高层调用测试函数时它打印 4 7。所以输出是 6 6 4 7.
我从 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。我们再次调用递归,但因为 p1 与 p2 it returns 不打印任何东西(不进入 if 条件)。然后它打印 6 6 并且当它 returns 到最高层调用测试函数时它打印 4 7。所以输出是 6 6 4 7.