递归思维缺口:别只会写循环
很多转岗或自学的开发者在平时搬砖时,循环语句写得飞起,但一遇到稍微复杂的树形结构遍历、分治问题或者回溯剪枝,脑子就立刻卡壳。这门每周算法视频课(二)解决的就是这个最致命的能力缺口:从迭代思维跨越到递归思维。资料包里的内容没有去堆砌高深的动态规划或者图论,而是非常克制地聚焦于递归这一单项基本功,带你把函数调用自身时的入栈出栈、边界条件判定、状态传递彻底搞透。适合那些能看懂基础数据结构、但自己写不出递归函数、一遇到嵌套调用就理不清执行顺序的技术学习者。如果你连基本的函数定义和数组操作都还磕磕绊绊,建议先去补基础语法,这门课直接上手会有强烈的挫败感。
建议精读顺序与配套练习法
看视频时千万别当相声听,必须跟着敲代码。建议先从递归实现字符串长度计算和阶乘这两块看起,它们最直观,能帮你建立“把大问题拆成同类型小问题”的直觉。接着去死磕二分查找的递归写法,重点体会区间收缩时边界索引的传参,很多人在写迭代版二分查找时都会死循环,递归版能帮你倒推边界条件的本质。汉诺塔那块是递归思维的试金石,看视频前先自己拿纸笔推演三个盘的移动过程,推不动再去看视频里的拆解逻辑。配套练习方面,每看完一个算法的实现讲解,立刻关掉视频,自己盲写一遍核心逻辑。写完去本地编译器里跑测试用例,比如算阶乘时故意传个负数或者零,看看你的边界拦截写对没有;写二分查找时造一个只有两个元素的数组,看会不会漏查。不要只满足于跑通主流程,要刻意制造异常输入去考验自己的代码鲁棒性。
学完应能独立回答的问题
学完这套资料,你应该能脱稿独立写出上述几种基础算法的完整实现,并且能在白板上向别人讲清楚递归每一层到底发生了什么。具体来说,看完后你要能回答这几个问题:递归函数的出口条件如果漏写会造成什么后果?计算斐波那契数列时朴素的递归实现为什么会存在大量重复计算,时间复杂度退化到了多少?在递归实现二分查找时,如何保证每次传给下一层的子区间一定能缩小而不陷入死循环?汉诺塔问题中,把最大盘子上面的所有盘子整体移动到过渡柱的核心逻辑,是如何体现分治思想的?如果这几个问题你只能含糊其辞,说明视频白看了,回去重新断点调试单步跟踪每层函数的返回值。把这些基础递归模型彻底吃透,以后再去看树的前中后序遍历、全排列或者回溯算法,你会发现底层全都是这一套逻辑的变种,查漏补缺的目的才算真正达到。
课程目录
1 每周算法_目录 (04:30) 2 每周算法_递归实现my_strlen (30:44) 3 每周算法_递归实现阶乘算法N! (10:15) 4 每周算法_递归实现斐波那契数列 (15:39) 5 每周算法_递归实现二分查找算法 (26:00) 6 每周算法_递归实现汉诺塔 (23:13)





