第十章 数据结构的效率

728 篇文章 1 订阅
349 篇文章 0 订阅

第十章数据结构的效率

 

本章介绍

■优化和改进递归函数

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

■高效地使用列表和数组

 

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值