程序员的数学(第2版) 读书笔记
记录读书过程中有启发和有趣的知识点,关于书本内容的截图全部来自对书本的拍照。
第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)=n21+2+3+...+(2 \times n-1)=n^2 1+2+3+...+(2×n−1)=n2
第5章 排列组合
这章写得简单易懂,以后需要可以再来温习一遍。下面是关于排列组合的几个公式:
Pnk=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)
Pnk=n!(n−k)!P_n^k=\frac{n!}{(n-k)!} Pnk=(n−k)!n!
Cnk=n!(n−k)!k!C_n^k=\frac{n!}{(n-k)!k!} Cnk=(n−k)!k!n!
Cnk=PnkPkkC_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章 什么是程序员的数学(总结篇)
对书本内容进行了总结,读完本书感觉数学是还是很有意思的。
附录:迈向机器学习的第一步
附录简单介绍了机器学习的一些基础知识。机器学习预测问题和分类问题,感知器,梯度下降法,神经网络。
机器学习的简化流程:
程序员的数学(第2版) 读书笔记相关推荐
- 《程序员的数学思维修炼》 读书笔记
电子书定价: ¥ 45.00 这是什么? 纸书定价: ¥ 45.00 Kindle电子书价格: ¥ ...
- 《技术领导力:程序员如何才能带团队》 读书笔记
技术管理工作 管理者能力 作为技术团队管理者,无论具体管几个人,最好能够拥有以下能力,才能满足各个需求方提出的需求: 深入理解一门或多门编程语言 深入理解多种流行的框架 系统架构能力强,拥有复杂系统的 ...
- 《程序员跳槽全攻略》读书笔记
原理篇 价值论 你的价值,和你技术牛不牛无关,只和你能为你的雇主提供多少价值有关.这是最根本的规则.增加自己的使用价值很简单,提升自己的业务能力就好. 供需 虽然交换价值以使用价值为基础,但它更容易受 ...
- java程序员面试宝典(刘磊版)笔记
1:JDK与JRE JDK:JAVA Development Kit, java开发工具包; 包括各种类库和工具,当然也包括JRE JRE:JAVA Runtime Environment,java程 ...
- 《程序员的七堂课》读书笔记:职业规划
1.避免焦虑 把事情想得很严重就很容易产生焦虑,焦虑容易让人产生一种错觉,认为自己很上进.这种错觉又让人不自觉地给自己加压,导致身上的包袱愈来愈沉重.一旦哪天想通了,把包袱扔掉,就会发现不带包袱爬山更 ...
- 【无标题】【程序员的数学基础-黄申】读书笔记之开篇
对程序猿而言,C语言.C++.JAVA.甚至是目前比较流行的Python等编程语言,它们只是工具.学会了如何使用这些工具,你还称不上是匠心之人,顶多是一个普普通通的工匠人.想要成为匠心之人,你需要具有 ...
- 《高效程序员的45 个习惯》读书笔记
[align=center][img]http://t.douban.com/lpic/s4073509.jpg[/img][/align] 本书和其他的"怎么写好出优秀的程序"的 ...
- 程序员的数学入门书籍、小学生C++入门书籍、算法启蒙书籍等
一.程序员的数学入门书籍 1.程序员的数学 第2版(2020.04) 2.程序员的数学思维修炼(趣味解读) 3.程序员的数学4:图论入门(2022.06) 4.数学女王的邀请 初等数论入门(2020. ...
- 读书笔记:程序员的数学 概率统计
读书笔记:程序员的数学 概率统计 特点 内容 第一.二章 概率定义 多随机变量 第三.四章 离散.连续分布 第五章 协方差矩阵与多元正态分布 第六.七章 估计与检验 伪随机数 第八章 各类应用 体会 ...
最新文章
- 对Reformer的深入解读
- alpha冲刺day12
- javax.naming.NamingException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
- 104 规约模拟器linux,变电站自动化系统调试装置 Substation automation system debugging device...
- HTTP状态保持(cookie、session)
- cocos2d-x for xna创建动画-人物行走
- Mysql学习总结(16)——Mysql之数据库设计规范
- python3 文件处理
- Linux内核分析之搭建Mykernel
- AndroidDeveloper Weekly No.5
- CSDN上传的资源为何不能自定义下载积分?
- 小试OKR一季度之后有感分享,你要不要试试ORK?
- 读《天才在左,疯子在右》03--灵魂深处
- 搜索战火重燃,夸克升级个人云服务做网盘的逻辑是什么?
- arduino红外热释电传感器_【Arduino】108种传感器系列实验(17)-热释电传感器模块-Arduino中文社区 - Powered by Discuz!...
- MapKit 进阶教程: 自定义瓦片
- 从内存播放Flash。
- 四门轿跑 标致发布Exalt概念车设计图
- win10子系统linux下cmake编译32位程序
- 【FiddlerTX插件】使用Fiddler抓包腾讯课堂最新版下载