为何首次cout输出为3 22?C++递归函数执行疑问
问题原因解释
你看到的"3 22"并非首次cout的输出结果,而是两次连续输出拼接后的视觉效果,具体执行流程如下:
- 首次调用
fun(3,2):执行cout << 3 << " " << 2;,实际输出内容是3 2,但没有换行或额外分隔符。 - 紧接着进入第二次递归调用
fun(2, 3*2=6):执行cout << 2 << " " << 6;,输出内容是2 6。
两次输出直接拼接后,控制台就会显示3 22 6,你误以为这是首次cout的结果,实际上前半部分3 2是第一次输出,后面的2是第二次输出的开头数字。
完整的执行输出拆解:
- 第一次输出:
3 2→ 控制台显示:3 2 - 第二次输出:
2 6→ 控制台显示:3 22 6 - 第三次输出:
1 12→ 控制台显示:3 22 61 12 - 第四次输出:
0 12→ 控制台最终显示:3 22 61 120 12
如果想区分每次cout的输出,可以在语句末尾添加换行符,修改为:
cout << x << " " << y << endl;
这样每次递归的输出就会单独占一行,不会出现拼接混淆的情况。
内容的提问来源于stack exchange,提问作者FruitCompany
相关产品推荐
相关产品推荐

