【发布时间】:2020-09-05 23:01:58
【问题描述】:
这是我的代码:
#include<iostream>
int x;
void gad(int x)
{
if(x==0)
return;
else{
std::cout<<"geek"<<" ";
std::cout<<"for geeks ";
gad(x-1);
}
}
int main()
{
gad(3);
return 0;
}
输出是这样的
geek for geeks geek for geeks geek for geeks
现在如果改变第二个std::cout的位置
来自
std::cout<<"geek"<<" ";
std::cout<<"for geeks ";
gad(x-1);
到
std::cout<<"geek"<<" ";
gad(x-1);
std::cout<<"for geeks ";
来的输出是这样的
geek geek geek for geeks for geeks for geeks
我的问题是为什么改变std::cout 的位置会改变输出?
我想如果我在函数后面加上cout,由于递归,它不会给出“for geeks”,并且由于if 语句而退出递归循环。
【问题讨论】:
-
因为 gad() 被递归调用并且 std::cout
-
当您更改这些行的顺序时,您预计会发生什么?
-
@JaMiT 我想如果我把
cout放在函数之后由于递归它不会给出“for geeks”并且由于 if 语句而退出递归循环 -
@Zoro-TheScar 这应该是问题的一部分,以便人们可以直接解决您对递归如何工作的误解。 (评论随时可能消失。)