修好快排的越界
场景:~/work/sort/qs.cpp 是一个原地快排,Makefile 带内存检查(AddressSanitizer),一运行就报数组越界。 任务:修好下标,让它不越界、排得对。make 编译后用 sample.txt 自测,运行时不
补写插入排序
场景:~/work/sort/ins.cpp 读入一串整数,要用插入排序排好后输出,可 insertion_sort 还没写。 任务:补全 insertion_sort。make 编译后用 sample.txt 自测;check 会用每次现
递归函数必须有哪两部分
第 1 步:算 fact(4):调用一层压一层 第 2 步:压进 fact(4) 第 3 步:压进 fact(3) 第 4 步:压进 fact(2) 第 5 步:压进 fact(1) 第 6 步:n 到 1:碰到出口,不再往下 第 7 步:
递归和循环有什么共同点
递归和循环的共同点是【0】。
出口通常写在哪
递归的出口(base case)通常写在函数的【0】。
什么结构天生适合递归
用递归处理起来最顺手的是【0】。
上一层的局部变量去哪了
递归调用发生时,上一层函数的局部变量【0】。
这个递归算出来是多少
运行下面这段程序: #include <algorithm> #include <iostream> #include <numeric> #include <string> #include
递归的往下和往回
第 1 步:从 fib(4) 开始 第 2 步:它要 fib(3) 和 fib(2) 第 3 步:fib(3) 又拆出两个 第 4 步:右边的 fib(2) 往下拆 第 5 步:左边的 fib(2) 也往下拆 第 6 步:同一个 fib(2
写在递归调用前面和后面
把一句 cout 放在递归调用之前还是之后,区别是【0】。