分治结果要和直接算的一样

dsum、dmax 已经写好。和标准库的 accumulate、max_element 比一比:两个都对上输出 两项一致,否则输出 有不一致。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

什么是递归树

第 1 步:搬 3 层:一次调用 第 2 步:它要搬两次 2 层 第 3 步:每个 2 层又要搬两次 1 层 第 4 步:每个节点搬一次:共 7 个 h3 h2 h2 h1 h1 h1 h1 递归树画的是【0】。

开始练习 →

归并排序递归树有多高

归并排序每次把问题砍一半,递归树的高度大约是【0】。

开始练习 →

怎么用递归树估复杂度

用递归树估算复杂度,做法是【0】。

开始练习 →

阶乘的递归有多深

运行下面这段程序,它数的是「最深压了几层」: #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 层

开始练习 →