C++实验代码:
#include<iostream>
using namespace std;
//代码在递归函数之前
void function1(int n)
{
cout << n - 1 << endl;
if (n > 1) function1(n - 1);
}
//代码在递归函数之后
void function2(int n)
{
if (n > 1) function2(n - 1);
cout << n - 1 << endl;
}
int main()
{
cout << "代码在递归函数之前" << endl;
function1(4);
cout << "代码在递归函数之后" << endl;
function2(4);
system("pause");
return 0;
}
当代码位于递归语句之前时代码按照递归调用由外向内执行,但是函数还是由内向外执行
分析:
- 首先运行函数f(4),先执行cout(3),在执行f(3)
- 运行函数f(3),首先执行cout(2),再执行f(2)
- 运行函数f(2),首先执行cout(1),再执行f(1)
- 运行函数f(1),首先执行cout(0),递归结束
当代码位于递归语句之后时代码由内向外执行
分析:
- 运行函数f(4)时,先运行f(3),再执行cout(3)
- 在f(3)的内部,首先运行f(2),再执行cout(2)
- 在f(2)的内部,首先运行f(1),再执行cout(1)
- 在f(1)的内部,首先运行f(0)递归结束,再执行cout(0)