首页 > 代码库 > 第十章 数据结构的效率

第十章 数据结构的效率

第十章数据结构的效率

 

本章介绍

■优化和改进递归函数

■使用尾递归(tail-recursion)和连续(continuations)

■高效地使用列表和数组

 

到目前为止,,我们在本书中已经使用过的函数式方法,有递归和函数式数据结构,比如,不可变列表。我们能写的最简单代码,是使用基本的  F# 集合类型(列表),直接表达我们的意图。在很多情况下,这种方法是合适的;但是,用来处理大型数据集时,“显而易见”,代码有时会导致性能问题。在这一章,我们将学习一些写代码的方法,可以不管输入数据的大小,以及优化处理数据函数的性能。我们仍将努力保持使代码尽可能的可读。

如果已经开发任何长时间运行的程序,几乎可以肯定,写的程序通常会导致堆栈溢出异常。在函数编程中,导致这种错误,很可能是由于写的递归函数不成熟,所以,我们将探讨几种解决函数在处理大量数据时,可能导致此错误的方法。这既是我们开始的主题,在本章的末尾还要再回到这个主题。

在有关递归的论述中间,我们重点在函数式列表和数组。处理函数式列表,最重要的理解其原理,这样,就可以有效地使用;F# 还支持数组,在某些情况下,能提供更好的性能。尽管数组主要是命令式数据类型,但是你会发现,我们也可以用非常具有函数式的方式使用。

第十章 数据结构的效率