《编程原本 》一第3章 可结合运算

第3章 可结合运算

本章讨论可结合的二元运算.可结合性使人可以重组相邻的运算,基于这种重组能力可以得到一个计算二元运算的幂的有效算法.规范性使我们可以用许多程序变换来优化这一算法.我们随后要利用该算法在对数时间里计算各种线性递归,例如计算斐波那契数.

时间: 2024-09-16 10:19:48

《编程原本 》一第3章 可结合运算的相关文章

《Clojure编程乐趣》—— 第1章,第1.5节小结

1.5 小结 Clojure编程乐趣 我们在本章讨论了很多概念性的东西,但这是必需的,定义了本书余下部分用到的术语.类似地,要进行后续讨论,理解Clojure的基础是很重要的.如果你能从之前的章节了解这些内容,甚至内化为自身的一部分,那么恭喜你:你拥有了继续阅读本书的坚实基础.但如果你尚不确定自己是否了解Clojure,那也OK-我们可以理解,一次消化所有这些内容有点多.随着我们逐渐讲述Clojure的故事,这些东西慢慢就能理解了.如果有函数式编程的背景,之前章节的一些讨论,你很可能会感到很熟悉

《编程原本 》一导读

前 言 本书将演绎方法应用于程序设计,讨论程序与保证它们能正确工作的抽象数学理论之间的联系.书中把反映这些理论的规程(speci.cation),基于这些理论写出的算法,以及描述算法性质的引理和定理一起呈现给读者.这些算法在一种实际程序设计语言里的实现是本书的中心.虽然规程主要是供人阅读,但它们也应该(或者说必须)严格地与非形式化的.供机器使用的代码相结合,必须在通用的同时又是抽象而且精确的.与在其他科学和工程领域里的情况一样,适合作为程序设计的基础的同样是演绎方法.演绎方法能帮助我们将复杂系统

《编程原本 》一第2章 变换及其轨道

第2章 变换及其轨道 本章把变换定义为从一个类型到它自身的规范函数.从一个初始值开始连续应用一个变换,就得到了这个值的轨道.我们要实现一个能确定轨道结构的算法,它只依赖于变换的规范性和轨道的有穷性.这个算法可以应用到不同的领域.例如,可以用它检查一个链接表是否为循环的,或用于分析一个伪随机数生成器.我们将为这一算法推导出一套接口,形式上是一集过程及其参数和结果的定义.对轨道结构算法的分析,使我们可以用最简单的方式介绍自己的编程方法.

《编程原本 》一第1 章 基础

第1 章 基础 本章从相关思想的一个简洁分类开始介绍一些术语:值.对象.类型.过程和概念,它们表示了与计算机有关的许多不同的理念范畴.这里还要详细讨论本书的中心观点:规范性.对一个过程,规范性意味着它对相等的参数总返回相等的结果.对一个类型,规范性意味着它应该有相等运算符,以及保证相等关系的拷贝构造函数和赋值.规范性使我们能应用等值推理(使用等值替换)去变换和优化程序.

《iOS编程指南》——第 1 章为何选择本地化应用

第 1 章 为何选择本地化应用iOS编程指南早在2007年发布iPhone的时候,苹果并没有一同发布本地化SDK,苹果公司声称不需要本地化SDK,鼓励大家使用JavaScript,CSS和HTML开发Web应用.但接下来剧情并没有按照苹果设计的那样发展,也许是苹果的思想太超前,大多数开发者并不吃这一套,他们希望自己开发的应用和iOS系统内置的应用一样,可以直接访问硬件并和系统高度集成. 于是在iPhone发布后短短几个月,开源社区就完成了一系列苹果原本认为不可能的事情.苹果本来试图通过技术手段把

《.net编程先锋C#》第二章 理论基础-公用语言 运行环境(转)

编程 第二章 理论基础-公用语言 运行环境既然你已经具有了C#全面的印象,我也想让你了解NGWS runtime的全貌.C#依靠由NGWS提供的运行时:因此,有必要知道运行时如何工作,以及它背后所蕴含的概念.所以,这一章分为两部分--它们是所有的概念和使用的基础.两部分的内容虽然有些重叠,但它有助于加深理解正在学习的概念. 2.1 NGWS RuntimeNGWS和NGWS Runtime为你提供了一种运行时环境.该运行时管理执行代码,并提供了使编程更容易的服务.只要你的编译器支持这种运行时,你

《.net编程先锋C#》第一章 C#简介(转)

编程 第一章 C# 简介 欢迎您加入C#的世界! 这一章将把您引进C#的天地,并回答一些相关的问题,如:您为什么要使用C#,C++和C#的主要有什么不同点,以及为什么C#使开发更容易而且还使您感到很有趣.为什么是另外一种编程语言? 必须回答的一个问题:当您已经使用C++或VB从事企业开发时,为什么还要学习另一种语言? 市场式的回答就是:"在企业计算领域,C#将会变成为用于编写"下一代窗口服务"(Next Generation Windows Services,简写为NGWS

《.net编程先锋C#》第九章 配置和调度(转)

编程 第九章 配置和调度在上一章,你学到如何创建一个通用语言运行时(CLR)组件,且如何在一个简单的测试应用程序中使用它.虽然CLR组件就要准备装载了,但你还是应该思考以下技术之一:.条件编译.文档注释.代码版本化 9.1 条件编译 没有代码的条件编译功能,我就不能继续工作.条件编译允许执行或包括基于某些条件的代码:例如,生成应用程序的一个查错(DEBUG)版本.演示(DEMO)版本或零售(RELEASE)版本.可能被包括或被执行的代码的例子为许可证代码. 屏幕保护或你出示的任何程序.在C#中,

《C++ 并发编程》- 第1章 你好,C++的并发世界

本文是<C++ 并发编程>的第一章感谢人民邮电出版社授权并发编程网发表此文版权所有请勿转载.该书将于近期上市. 本章主要内容 何谓并发和多线程  为什么要在应用程序中使用并发和多线程  C++并发支持的发展历程  一个简单的C++多线程程序是什么样的 这是C++用户的振奋时刻.距1998年初始的C++标准发布13年后C++标准委员会给予程序语言和它的支持库一次重大的变革.新的C++标准也被称为C++11或C++0x于2011年发布并带来了很多的改变使得C++的应用更加容易并富有成效. 在C++