程序员的数学

程序员的数学

最近看的一本书,把数学知识相当复习了一遍,更重要是阐释了数学所要传达的一种思维:
以下是阅读时候的一些记录:
不要将2的0次方的值作为一种知识去记忆,我们跟需要考虑的是,如何对2的0次方进行适当的定义,以期让规则变得更简单,
这不是记忆力的问题,而是想象力的问题,请记住这种思维方式,以简化规则为目标去定义值

在按位计数法中,数为具有很重要的意义,0的作用就是占位
通过0来明示“没有”,能够使规则简单化。在许多情况下,规则越简单越好

将大问题拆分为小单元

逻辑是消除歧义的工具

if语言的条件分支体现了“兼具完整性和排他性的分解”

逻辑的基本是两个分支

真值表没有遗漏和重复,兼顾了完整性和排他性

A异或B意味着:仅当A和B不同时为true

余数就是分组

在面对难以直接计算的庞大数字时,只要发现它是如何循环的,通过余数的力量将它降服

当我们“想要详细研究事物”时,往往容易陷入“想正确的把握”,有时“准确分类”更为有效

第k个数据是k-1号

n位二进制数可以表示的数的总是为2的n次方

可以用树形图来解释排列的问题,树形图是有助于“认清计数对象性质”的有效工具

“置换”和“排列”是考虑顺序的,而“组合”则不考虑顺序

先考虑顺序进行计数,然后除以重复度的方法,是计算组合时常用的计算方式


为了防止“重复和遗漏”,我们不能只是“仔细地计数”,更重要的是“认清计数对象的性质”

假设现在碰到了一个难题,我们十分清楚“简单问题易解,复杂问题难解” 的道理,所以这时,我们要联想到汉诺塔,进行如下思考:
               “能将复杂问题转化为简单的同类问题吗”
这就是递归的思维方式


为了找出复杂问题中隐含的递归结构,我们一般这样做:
       从整体问题中隐去部分问题【相当于关注特定解】
        判断剩余部分是否和整体问题是同类问题



你可能感兴趣的:(程序员的数学)