基本信息
【插图】

编辑推荐
没有晦涩的公式,只有好玩的数学题。
帮你掌握编程所需的“数学思维”。
日文版已重印14次!
内容简介
计算机书籍
《程序员的数学》面向程序员介绍了编程中常用的数学知识,借以培养初级程序员的数学思维。读者无需精通编程,也无需精通数学,只需具备四则运算和乘方等基础知识,就可以阅读本书。
《程序员的数学》中讲解了二进制计数法、逻辑、余数、排列组合、递归、指数爆炸、不可解问题等许多与编程密切相关的数学方法,分析了哥尼斯堡七桥问题、高斯求和方法、汉诺塔、斐波那契数列等经典问题和算法。引导读者深入理解编程中的数学方法和思路。
《程序员的数学》适合程序设计人员以及编程和数学爱好者阅读。
编程的基础是计算机科学,而计算机科学的基础是数学。因此,学习数学有助于巩固编程的基础,写出更健壮的程序。
《程序员的数学》面向程序员介绍了编程中常用的数学知识,借以培养初级程序员的数学思维。读者无需精通编程,也无需精通数学,只需具备四则运算和乘方等基础知识,就可以阅读本书。
《程序员的数学》中讲解了二进制计数法、逻辑、余数、排列组合、递归、指数爆炸、不可解问题等许多与编程密切相关的数学方法,分析了哥尼斯堡七桥问题、少年高斯求和方法、汉诺塔、斐波那契数列等经典问题和算法。引导读者深入理解编程中的数学方法和思路。
《程序员的数学》还对程序员和计算机的分工进行了有益的探讨。读完此书,你会对以程序为媒介的人机合作有更深刻的理解。
作译者
作者网站http://www.hyuki.com/
管杰毕业于复旦大学日语系。现为对日软件工程师,多年日语技术文档编写经验。爱好日汉翻译和日本文化史,译有《明解C语言:入门篇》等。
目录
第1章0的故事——无即是有
本章学习内容
小学一年级的回忆
10进制计数法
什么是10进制计数法
分解2503
2进制计数法
什么是2进制计数法
分解1100
基数转换
计算机中为什么采用2进制计数法
按位计数法
什么是按位计数法
不使用按位计数法的罗马数字
指数法则
10的0次方是什么
10﹣1是什么
规则的扩展
对20进行思考
前言
大家好!我是结城浩。欢迎阅读《程序员的数学》。
本书是为程序员朋友们写的数学书。
编程的基础是计算机科学,而计算机科学的基础是数学。因此,学习数学有助于巩固编程的基础,写出健壮的程序。
有的读者可能会说“但我数学不好啊”。特别是很多读者“一碰到算式就跳过不读”。
坦率而言,我自己遇到书中的算式也想跳过不看。
本书尽可能减少了“大家不想看的算式”,也没有过多的定义、定理和证明。
这是为帮助程序员更容易理解编程而写的书。希望你能通过本书学到有助于编程的“数学思维”。
数学思维示例
学习“数学思维”说起来太抽象了,我们来举些具体的例子。
【条件分支和逻辑】
在编程时,我们按照条件将处理方法分为多个“分支”。C 语言和Java 语言中使用的是if 语句。处理方法为: 当满足条件时执行这条语句,不满足条件时执行另一语句。这时,我们就使用了数学领域的“逻辑”来控制程序。因此,编程时必须熟练掌握“ 与”“、或”“、非”、“蕴涵”等逻辑构成元素。
【循环和数学归纳法】
我们在处理大量的信息时,使用程序进行“循环”操作。比如使用for 语句可以循环处理大量数据。循环中使用的就是“数学归纳法”。
【分类和计数方法】
在将许多条件和数据“分类”时,程序员必须注意不能有遗漏。这时加法法则、乘法
法则、排列、组合等“计数方法”将助你一臂之力。这是程序员应该熟记于心的数学工具。
通过本书,也可以学到递归、指数、对数、余数等重要的基础思维方式。
人类和计算机的共同战线
我们写程序是为了解决人类解决不了的问题。程序员理解问题,编写程序;计算机运行程序,解决问题。
媒体评论
老师:假设现在有一排多米诺骨牌。如何将它们全部推倒呢?
学生:这个简单!只要将它们排列成其中1 个一倒就能顺次带倒下一个的形状就行了。
老师:这样还不够喔!
学生:啊?为什么呢?
老师:因为还需要推倒第一个多米诺骨牌。
学生:那不是理所当然的嘛!
老师:正是!这样你就能理解数学归纳法的两个步骤了。
本章学习内容
本章我们要学习的是数学归纳法。数学归纳法是证明某断言对于0 以上的所有整数(0,1,2,3…)都成立的方法。整数0,1,2,3…有无穷个,但若使用数学归纳法,只需经过"2个步骤",就能证明有关无穷的命题。
首先,我们以求出1 到100 之和为例介绍数学归纳法。接着会穿插几道思考题来看一下数学归纳法的具体实例。最后,我们会讨论数学归纳法和编程的关系,一起了解一下循环不变式。
高斯求和
思考题(存钱罐里的钱)
思考题(存钱罐里的钱)
在你面前有一个空存钱罐。
第1 天,往存钱罐里投入1 元。存钱罐中总金额为1 元。
第2 天,往存钱罐里投入2 元。存钱罐中总金额为1 + 2 = 3 元
第3 天,往存钱罐里投入3 元。存钱罐中总金额为1 + 2 + 3 = 6 元
第4 天,往存钱罐里投入4 元。存钱罐中总金额为1 + 2 + 3 + 4 = 10 元
那么,每天都这样往存钱罐里投入硬币的话,第100 天时的总金额为多少呢?
书摘
第
1章
0的故事
——无即是有
◎课前对话
老师:1,2,3的罗马计数法是 I,II,III。学生:加法很简单嘛。 I + II,只要将 3个 I并排写就行了。老师:不过 II + III可不是 IIIII,而是 V喔!学生:啊,是这样啊!老师:没错,如果数目变大,那数起来可就费劲啦!
本章学习内容
本章将学习有关 “0”的内容。
首先,介绍一下我们人类使用的 10进制和计算机使用的 2进制,再讲解按位计数法,一起来思考 0所起的作用。乍一看, 0仅仅是表示 “什么都没有 ”的意思,而实际上它具有创建模式、简化并总结规则的重要作用。
小学一年级的回忆
以下是小学一年级时发生的事,我依然记忆犹新。 “下面请打开本子,写一下 ‘十二 ’。”老师说道。于是,我翻开崭新的本子,紧握住削尖了的铅笔,写下了这样大大的数字。
老师走到我跟前,看到我的本子,面带微笑亲切地说: “写得不对喔。应该写成 12喔。 ”
当时我是听到老师说 “十二 ”,才写下了 10和 2。不过那样是不对的。众所周知,现在我们把 “十二 ”写作 12。
而在罗马数字中, “十二 ”写作 XII。X表示 10,I表示 1。II则表示两个并排的 1,即 2。也就是说, XII是由 X和 II组成的。
如同 “十二 ”可以写作 12和 XII,数字有着各种各样的计数法。 12是阿拉伯数字的计数法,而 XII是罗马数字的计数法。无论采用哪种计数法,所表达的 “数字本身 ”并无二致。下面我们就来介绍几种计数法。
10进制计数法