第1章 0的故事
按位计数法:
例:
5是个数,10是基数或底,3是指数。
10进制转换为2进制称为基数转换。
2进制和10进制的优缺点:
1.在10进制计数法中,位数少,但是数字的种类多。
人类有10根指头,要靠直觉来把握数字的大小,对人类来说,这种比较易用。
2.在2进制计数法中,数字的种类少,但是数位多。
计算机处理的数字种类少、计算规则相对简单,对计算机来说,这种比较易用。
非按位计数法:如罗马计数法,最主要的特征是没有0
指数法则:
10的0次方是什么?10的2次方是‘2个10相乘’,那么10的0次方不就是‘0个10相乘’吗?这样的话,不应该是1,而是0吧?
寻找它们的规律
我们发现指数每减1,数字就变为原来的10分之1。可以推导出?为1.10的1-次方顺便也可以推导出来是1/10。
0的作用:
在按位计数法中,数位具有很重要的意愿。比如十位的数‘没有’,也不能不写数字,0的作用就是占位。
为什么人类要发明计数法呢?
数越大越难处理,方法就是将大问题分解为小‘单元’。
第2章 逻辑
逻辑:消除自然语言的歧义、严密准确地记述事物的工具。
生活中的自然语言歧义例子:12月份或者低于10°的时候打开暖气。小明在北京或者上海。
同样的‘或者’,不一样的意思。第一个或者没有排他性,12月份并且低于10°还是会打开暖气。而小明在北京就没法同时在上海。
在遇到大问题时,通常将其分解为多个小问题。这时常用的方法就是检查它的完整性(没有遗漏)和排他性(没有重复)。
图表能帮我们更好的理解事物的逻辑关系,常用的有逻辑表达式、真值表、文氏图、卡诺图。
第3章 余数
运用余数,大数字的问题就能简化为小数字的问题。
人们只要发现了周期性和奇偶性,就能将大问题转换为小问题来解决。
本章例子,100天后星期几问题、草鞋铺设问题、格尼斯七桥问题。
第4章 数学归纳法
数学归纳法:证明有关整数的断言对于0以上的所有整数是否成立所用的方法。
步骤1:证明“P(0)成立”。
步骤2:证明不论k为0以上的哪个整数,“若P(k)成立,则P(k+1)也成立”。
用人话说就是:先证明一条腿可以往前迈一步,然后证明另一条腿无论什么情况都能迈出去,最终证明人可以到达无限的远方,这就是数学归纳法。可以想象多米诺骨牌。
第5章 排列组合
置换:将n个事物按顺序进行排列的总数。
排列:从n个事物中取出k个进行排列的总数。
组合:从n个事物中取出k个进行排列,并且不考虑顺序的总数。
公式的意思,先考虑顺序进行计数,然后除以重复度。
排列=置换*组合,例如:有ABCDE5张牌,3张的置换*从5张取3张的组合=从5张中取3张的排列。
第6章 递归
在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。
递归的条件:
1. 子问题须与原始问题为同样的事,且更为简单;
2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
递归和归纳,只是方向不同。“从一般性前提推出个别性结论”的是递归(recursive)的思想。而“从个别性前提推出一般性理论”的是归纳(inductive)的思想。
编程时会遇到的递归结构,如程序源代码缩进、树形数据结构、XML语法、快速排序算法等。
递归的要点在于把握结构,分解问题。
第7章 指数爆炸
指数的概念:在乘方a中,其中的a叫做底数,n叫做指数,结果叫幂。
f(x)=a^x (a为常数,x为指数) 随着x单位长度的递增,f(x)会呈“爆炸性”增长
二分法就是指数爆炸思想的反向实施。
处理指数爆炸的4种方法:1.极力求解2.变相求解3.近似求解4.概率求解
第8章 不可解问题
停机问题,无限循环等。