走进函数式编程 (Becomming Functional) (递归)

阅读完递归这一章我仍然无法理解递归为何被作为函数式编程的一个特性。只是递归有时候会简洁,但没弄好却更让人犯迷糊,用循环的话就四平八稳,总是比较好理解。当然有些情况用循环去思考确实难于处理。递归方法内部调用方法本身通常也比较慢,因为需要频繁的保存现场,创建栈帧,恢复现场,所以受内存限制,递归到达一定深度容易导致堆栈溢出。

章中还说到递归的一个优点在于它只需处理输入的值,而循环则需关注整个集合本身。这个该如何理解呢?在每一次递归调用的时候传入的都是当前需要被处理的数据。

先来比较下循环变换成递归的一个简单示例,用 Scala 实现 阅读全文 >>