递归函数的自动返回机制
例子:递归打印数字
问题:
写一个递归函数,从 n
打印到 1
。
代码:
#include <iostream>
using namespace std;
void printNumbers(int n) {
if (n <= 0) return; // 递归终止条件
cout << "进入递归:n = " << n << endl; // 当前递归中的操作
printNumbers(n - 1); // 递归调用
cout << "退出递归:n = " << n << endl; // 递归返回后的操作
}
int main() {
printNumbers(5); // 从 5 打印到 1
return 0;
}
运行结果:
进入递归:n = 5
进入递归:n = 4
进入递归:n = 3
进入递归:n = 2
进入递归:n = 1
退出递归:n = 1
退出递归:n = 2
退出递归:n = 3
退出递归:n = 4
退出递归:n = 5
递归过程解析:
1. 递归调用阶段:
printNumbers(5)
调用printNumbers(4)
,然后暂停。printNumbers(4)
调用printNumbers(3)
,然后暂停。- …
printNumbers(1)
调用printNumbers(0)
,满足终止条件,返回。
2. 返回阶段:
printNumbers(0)
返回后,继续执行printNumbers(1)
中的代码:cout << "退出递归:n = 1" <