阶乘的递归有多深

运行下面这段程序,它数的是「最深压了几层」: #include <algorithm> #include <iostream> #include <numeric> #include <string

开始练习 →

汉诺塔三层要走几步

汉诺塔的递归是「先搬上面 n-1 个,搬一次最大的,再把 n-1 个搬回来」。运行下面这段程序: #include <algorithm> #include <iostream> #include <numer

开始练习 →

数出递归有多深

补全 fact:算阶乘的同时记下最深压到了第几层。算 5 的阶乘,输出最大深度。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

数出汉诺塔要搬几次

补全 hanoi:搬 n 层要「先搬上面 n-1 层、搬一次最大的、再搬回 n-1 层」。搬 3 层,输出一共搬了几次。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

一次两个分支代价就爆了

阶乘每层只递归一次,斐波那契每层递归两次——同样是 n = 20,调用次数差多少?补全带计数的 fib,把两个调用次数用 / 拼起来输出(阶乘在前)。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

递归比迭代多花的是什么

第 1 步:上:递归;下:循环 第 2 步:递归:第 1 层栈帧 第 3 步:递归:第 2 层栈帧 第 4 步:递归:第 3 层栈帧 第 5 步:递归:第 4 层栈帧 第 6 步:递归:第 5 层栈帧 第 7 步:循环从头到尾只占 1 层

开始练习 →

那递归还有什么好(C++)

明知有栈开销还用递归,理由是【0】。

开始练习 →

什么样的递归最好改成循环

最容易改写成循环的是【0】。

开始练习 →

循环版算出来一样吗

运行下面这段程序: #include <algorithm> #include <iostream> #include <numeric> #include <string> #include

开始练习 →

循环版压了几层栈

运行下面这段程序,它数的是「最深压了几层」: #include <algorithm> #include <iostream> #include <numeric> #include <string

开始练习 →