记录读书过程中有启发和有趣的知识点,关于书本内容的截图全部来自对书本的拍照。
第1章 0 的故事 主要讲的是 0 在数学中的作用和按位计数法(二进制,十进制,指数法等等)。 拓展: 参考链接:https://www.cnblogs.com/xiaoyh/p/10249006.html。 题目:计算整数的二进制表示中1的个数。其中的一个解法:把一个整数n减去1,再和原来的整数与运算,会把该整数的最右边的1变成0。 这个思路可以用来解如下问题: Power of Four(来自LeetCode)
Given an integer (signed 32 bits), write a function to check whether it is a power of 4. 输入一个32位的整数,判断是否是4的倍数
我的代码:
public class Solution { public bool IsPowerOfFour(int num) { bool result = false; if(((num - 1) & num) == 0){ if(Math.Log(num, 2)%2==0){ result =true; } } return result; } }第2章 逻辑 复习了逻辑的基础知识。 摩根定律:一个命题和他的逆否命题是等价的。 逻辑的4种表现形式:表达式,真值表,卡罗图,文氏图。 如下是书中关于逻辑的四种表现形式的截图:
第3章 余数 书中介绍的一些很有意思的思考题,也介绍了很多数学中有意思的规律:
10 的 100 次方天后是星期几? 10的100次方除以7的余数是有规律的。
1234567 的 987654321 次方的个位数是什么? 7 乘方的末位数是有规律的。
寻找恋人
哥尼斯堡七桥问题
本章还介绍了简单奇偶校验的数学原理,在通信中应用很广泛,感兴趣的可以百度了解更多。
第4章 数学归纳法 数学归纳法的基本原理和内容就不多说。 有个小规律记录下: 1 + 2 + 3 + . . . + ( 2 × n − 1 ) = n 2 1+2+3+...+(2 \times n-1)=n^2 1+2+3+...+(2×n−1)=n2 第5章 排列组合 这章写得简单易懂,以后需要可以再来温习一遍。下面是关于排列组合的几个公式: P n k = n × ( n − 1 ) × ( n − 2 ) × . . . × ( n − k + 1 ) P_n^k=n\times(n-1)\times(n-2)\times...\times(n-k+1) Pnk=n×(n−1)×(n−2)×...×(n−k+1) P n k = n ! ( n − k ) ! P_n^k=\frac{n!}{(n-k)!} Pnk=(n−k)!n! C n k = n ! ( n − k ) ! k ! C_n^k=\frac{n!}{(n-k)!k!} Cnk=(n−k)!k!n! C n k = P n k P k k C_n^k=\frac{P_n^k}{P_k^k} Cnk=PkkPnk 第6章 递归 递归对程序员来说一点都不陌生,本章介绍了几个经典问题的解法。 汉诺塔,斐波拉契数列,帕斯卡三角形,谢尔平斯基三角形。 没看这本书之前,我一直以为斐波拉契数列是个无聊数列,没有什么实际意义,看了这章的介绍改变了这种想法。
帕斯卡三角形 LeetCode 上正好刷到帕斯卡三角形的题:Pascal’s Triangle II 编写函数输出帕斯卡三角形第n层,层数从0开始。如下是我结合书中介绍的帕斯卡三角形和组合数的关系写出的代码:
public class Solution { public IList<int> GetRow(int rowIndex) { List<int> result = new List<int>(); result.Add(1); long pre=1; for(int i=0;i<rowIndex;i++){ pre=(pre*(rowIndex-i))/(i+1); result.Add((int)pre); } return result; } }第7章 指数爆炸 本章介绍了指数,二分法查找,对数,利用对数求解乘法运算。 第8章 不可解问题 这章介绍了什么是不可解问题,理论有点绕,还是能看懂。 第9章 什么是程序员的数学(总结篇) 对书本内容进行了总结,读完本书感觉数学是还是很有意思的。 附录:迈向机器学习的第一步 附录简单介绍了机器学习的一些基础知识。机器学习预测问题和分类问题,感知器,梯度下降法,神经网络。 机器学习的简化流程:
