一共压了几层
运行下面这段程序,它数的是「递归压了几层」: #include <iostream> #include <string> #include <vector> using namespace std; i
自己写一个递归
补全 fact:用递归算阶乘,别用循环。补全后输出 5 的阶乘。 (本题用 g++ -std=c++17 -O0 编译。)
不用递归自己拿栈来压
递归靠的是系统的调用栈。这次不用递归,自己拿一个栈把整棵树走一遍:kids[i] 是节点 i 的孩子。补全 count_nodes,从根 0 出发数一共有几个节点。 (本题用 g++ -std=c++17 -O0 编译。)
补上递归的基线条件
下面的 fib 漏了基线条件,一跑就无限递归直到崩溃。补上它(fib(0)=0、fib(1)=1),输出 fib(10)。 (本题用 g++ -std=c++17 -O0 编译。)
每次调用压上去的叫什么
第 1 步:调用栈只有这么大 第 2 步:又调用一层:再压一帧 第 3 步:又调用一层:再压一帧 第 4 步:又调用一层:再压一帧 第 5 步:又调用一层:再压一帧 第 6 步:又调用一层:再压一帧 第 7 步:又调用一层:再压一帧 第 8
大局部数组为什么会崩
在函数里写 int a[10000000]; 程序一跑就崩,是因为【0】。
大数组该放哪才不撑爆栈
把大数组挪到【0】,就不会撑爆调用栈。
递归一万层没问题
运行下面这段程序: #include <iostream> #include <string> #include <vector> using namespace std; int depth(int
一个栈帧里的数组多大
运行下面这段程序: #include <iostream> #include <string> #include <vector> using namespace std; void f() {
把大数组挪成全局
下面的程序把 300 万个 int 的数组放在 main 里(约 12 MB,超过默认的栈),一跑就崩。把它挪成全局变量,输出所有元素之和。 (本题用 g++ -std=c++17 -O0 编译。)