专栏名称: 好玩的数学
好玩的数学以数学学习为主题,以传播数学文化为己任,以激发学习者学习数学的兴趣为目标,分享有用的数学知识、有趣的数学故事、传奇的数学人物等,为你展现一个有趣、好玩、丰富多彩的数学世界。每周还有三道题等着你来挑战!
目录
相关文章推荐
超级数学建模  ·  为什么上帝和魔鬼都喜欢数学...... ·  昨天  
超级数学建模  ·  这玩意,我在高铁上被问了一路! ·  3 天前  
超级数学建模  ·  五粮液24亿造车成功! ·  3 天前  
超级数学建模  ·  劝你今年过年不要用人民币红包! ·  3 天前  
51好读  ›  专栏  ›  好玩的数学

不只是适合程序员的数学思维书 | 好书

好玩的数学  · 公众号  · 数学  · 2017-05-29 07:29

正文

每次读结城浩的书都有一种很轻松的感觉,之前给大家推荐的《数学女孩》是这样的,今在要给大家推荐的这本《程序员的数学》也是这样,这是结城浩的另一代表作。


不只适合程序员的数学思维书


本书面向程序员介绍编程中常用的数学知识,借以培养初级程序员的数学思维。读者无需精通编程,也无需精通数学,只需要具备四则运算和乘方等基础知识,就可以阅读本书。所以这是一本面向初级程序员,重在培养数学思维的书,而不是教你如何编程的书。当然如果你懂点编程的知识将更加有助于理解本书内容。


既然是重在培养数学思维的书,那么对于不是程序员的朋友来说,读起来也一样会有收获。


如果你是学生家长,想从小培养孩子的编程能力,这是一本难得的书,初中及初中以上的学生可阅读。


编程中的“数学思维”


通过本书,你将学习到编程中常用的“数学思维”,“数学思维”说起来太抽象,我们来举几个具体的例子:


1)条件分支和逻辑

在编程时,我们按照条件将处理方法分为多个“分支”。C 语言和Java 语言中使用的是if 语句。处理方法为: 当满足条件时执行这条语句,不满足条件时执行另一语句。这时,我们就使用了数学领域的“逻辑”来控制程序。因此,编程时必须熟练掌握“ 与”“、或”“、非”、“蕴涵”等逻辑构成元素。


2)循环和数学归纳法

我们在处理大量的信息时,使用程序进行“循环”操作。比如使用for 语句可以循环处理大量数据。循环中使用的就是“数学归纳法”。


3)分类和计数方法

在将许多条件和数据“分类”时,程序员必须注意不能有遗漏。这时加法法则、乘法法则、排列、组合等“计数方法”将助你一臂之力。这是程序员应该熟记于心的数学工具。


通过本书,还可以学到递归、指数、对数、余数等重要的基础思维方式。


编程之外的“数学思维”


我很赞赏结城浩的书,因为他总能把数学思维的过程用通俗易懂的方式和盘托出,读起来是一种享受。除了编程中的“数学思维”,我们还能向结城浩学习到哪些“数学思维”呢?


1)善用自己的语言总结数学

我们小学就学过余数,但是如果别人问你余数是什么?余数有什么用?你能很快回答出来吗?


也许你会搬出课本上的定义:在整数的除法中,只有能整除与不能整除两种情况。当不能整除时,就产生余数。


再来看结城浩是如何用自己的语言概括余数的,他说:“余数就是作除法运算时剩下的数。”并提出:“余数就是分组。”道出了余数的作用。



再来看,什么是排列组合?排列组合是解决计数问题的方法。那什么是递归呢?递归就是自己定义自己。数学归纳法有什么作用?它是用来征服无穷数列的工具。而逻辑,他把它总结为真与假的二元世界。等等。



如果我们在学习数学的过程也能试着用这样简短的语言去概括、总结你所过的数学知识和方法,那么就不会有学了之后不知道数学有什么用的困惑了。



2)善用图表展现数学思维的过程

在书中我们经常能够看到类似于下面的有意思的图表,它可以向读者很好的展现数学思维的过程。


在余数这一节的结尾处,作者用一个想象的“七角时钟”和“六角时钟”来直观的表示“周期为7”和“周期为6”的规律。



有了这个图,可以很直观地看到,“100除以7的余数为2”表示这个时钟前进100个刻度后指针指向“2”这个顶点。而100除以7的商为14,表示时针转了14圈。


在数学学习的过程中,如果我们能善用图表,将有助于我们更好地理解数学。


3)从简单到复杂的数学思维

以“汉诺塔”游戏为例。数学家爱德华·卢卡斯(edouard Lucas)于1883年发明了一个叫“汉诺塔”的游戏:有三根细柱(A、B、C),A柱上套着6个圆盘,这个圆盘大小各异,按从大到小的顺序自下而上摆放。现在要把套在A柱上的6个圆盘全部移到B柱上,并且在移动圆盘时须遵守下述规则。


  • 一次只能移动柱子最上端的一个圆盘。

  • 小圆盘上不能放大圆盘。


将1个圆盘从一根柱子移到另一根柱子,算移动“1次”。那么,将6个圆盘全部从A移到最少需要移动几次?


解决这个问题的思维就是从简单的问题着手——先找出“3层小汉诺塔”的解法,再找出解决“6层汉诺塔”问题的方法,最后再过度到“n层汉诺塔”问题的解法。


这就是一种从简单到复杂的数学思维方法。当然书中你还将学到很多其他的思维方法,这里仅举几例,绝对是挂一漏万。


好玩的数学题


本书还有一个亮点是,书中为我们展示了许多有趣的数学问题的解法。比如上面说的汉诺塔问题,还有斐波那契的兔子繁殖问题、黑白棋通信问题、寻找恋人问题、铺设草席问题、哥尼斯堡七桥问题(一笔画问题)、高斯求和问题等。如果你对编程不感兴趣,把它当作数学问题集来看也是不错的。


↓↓↓更多详情可点击阅读原文查看。