9

第3-8课:如何设计递归函数

 3 years ago
source link: https://blog.csdn.net/orbit/article/details/108729363
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

这一篇内容是根据读者的反馈,补充了一些原来课程中没有规划的内容。考虑到有的读者不经常去读者圈提问题,在此建立一个读者群,扫描群二维码可以加群讨论:

e503a2d0-db1f-11e8-be29-c93b775a42d1

(若群满了,可加“madacui”微信号拉您进群,请备注:算法读者,谢谢~)

另外,本课程的代码请戳这里

如何分析递归程序

递归不是“先有鸡还是先有蛋的问题”,也不是“从前有座山,山里有座庙…”,严格来说,递归应该不是算法设计,而是算法实现范畴的内容,因为它并不属于任何一种算法模式。作为算法实现的一种常用形式,递归程序常常让新手望而却步。难在两点,其一是相对于顺序执行的线性代码或重复执行的循环代码,递归程序不是很容易在脑子里形成代码流程,分析代码的时候,常常在几层递归调用之后,就记不得各层递归调用的上下文环境了;其二是递归程序设计比较困难,新手常常感觉无从下手。这一课,我就从递归程序的分析方面分享一些我的经验。

分析递归程序,不要像分析循环或线性程序代码那样,直接带入上下文环境进行死算,因为这样很容易迷失在代码细节中,只见树木、不见森林,最后都记不得哪一层参数是哪一层的上下文环境了。递归体现的是类似与“以此(方法)类推”或“以同样的操作模式(步骤)重复…”这样的思想(有点类


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK