15.1 递归思想
编程范式:
在所有的编程范式中,面向对象编程
(Object-Oriented Programming)
无疑是最大的赢家。但其实面向对象编程并不是一种严格意义上的编程范式,严格意义上的编程范式分为:
- 命令式编程(Imperative Programming)
- 函数式编程(Functional Programming)
- 逻辑式编程(Logic Programming)
面向对象编程只是上述几种范式的一个交叉产物,更多的还是继承了命令式编程的基 因。
在传统的语言设计中,只有命令式编程得到了强调,那就是程序员要告诉计算机应该怎么做。
递归则通过灵巧的函数定义,
告诉计算机做什么 。因此在使用命令式编程思维的程序中,是现在多数程序采用的编程方式,递归出镜的几率很少,而在函数式编程中,大家可以随处见到递归的方式。使用解决子问题的方案解决一个问题,也就是递归,这种想法十分诱人。许多算法和 问题本质上都是递归的。一旦我们找到窍门,使用递归来设计解决方案就变得极富表现力且直观。
不建议使用循环
scala 中循环不建议使用 while
和 do...while
,而建议使用递归。