我从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;
}
}
答案 0 :(得分:3)
第一次测试 p1 变为4, p2 变为7.但在打印之前我们再次进行递归,这次 p1 变为6, p2 也变为6.我们再次调用递归,但是当 p1 与 p2 相同时,它返回而不打印任何内容(如果条件不输入) )。然后它打印6 6并且当它返回到最高级别调用测试功能时它打印4 7.因此输出是6 6 4 7.