跨过出口走了多少层
下面的 down 出口是 n == 0,每次却减 2。为了不真的把栈压爆,程序加了一根「保险丝」:进了 50 次以上就强行返回。运行下面这段程序:
#include <algorithm>
#include <iostream>
#include <numeric>
#include <string>
#include <vector>
using namespace std;
int calls = 0;
int down(int n) {
calls++;
if (calls > 50) return 0; // 保险丝:防止真的把栈压爆
if (n == 0) return 0;
return down(n - 2);
}
int main() {
down(5);
cout << calls << endl;
}
(本题用 g++ -std=c++17 -O0 编译。)