文章目录
引言
很多时候,计算机的思维方式是自顶向下的,即递归。相比之下,人的思维方式是自底向上的递推。
人类固有的递推思维方式,也就是从前到后,从小到大,并不适合一些难题,比如八皇后问题。
计算机可以直接处理大场景,有时会采用从大到小,层层分解的递归方法。这可以说给我们提供了一个新的看问题的方法和解决问题的思路。
计算机科学的精髓在于自顶向下的递归,递归的逆向思维在英语里被称为recursive。相比之下,人的正向思维被称为递推(iterative),在中学里学的数学归纳法就是递推方法的典型应用。
对搞计算机科学的人来讲,需要先做顶层设计,这就如同盖房子先要有一个大致的外观草图,然后才能设计细节。类似地,写一本书也是如此,先要有顶层框架,明确写什么,然后才是补充细节。
没有很好的设计代码,到后来扩展起来到处受限制,扩大到一定程度就有点hold不住了。
I 递归
1.1 基本思想
递归的本质:自顶而下,自己不断重复。
递归是一种算法:对于一个复杂的问题