您好,这不是一项作业或其他任何内容,但是您能解释一下为什么返回2 1的原因吗?我很困惑,我很讨厌递归。
#include <string>
using namespace std;
void fun(int);
int main()
{
int a = 0;
fun(a);
return 0;
}
void fun(int n)
{
if (n < 2)
{
fun(++n);
cout << n<<" ";
}
}
此代码不返回任何东西,除了返回0退出代码的main
函数。函数fun
仅prints >>。
它打印2 1
,因为它计算此:
void fun0() { fun1(); cout << 1 <<" "; } void fun1() { cout << 2 <<" "; }
因此,它从
fun1
返回代码后首先打印2,然后打印1。
每次您进行递归调用时,都会创建一个新的n实例。程序仅在两次递归调用之后才到达第一个cout,因此此时n为2。我不想详细解释所有工作原理,我真的认为,如果您编写更多的printf,则可以自己弄清楚程序在做什么。如果您通过我的简单提示自己弄清楚了这一点,您将知道递归如何很好地进行。
您正在将初始化为0的a
作为fun()
的参数。