程序员的数学(第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章 余数
书中介绍的一些很有意思的思考题,也介绍了很多数学中有意思的规律:

  1. 10 的 100 次方天后是星期几?
    10的100次方除以7的余数是有规律的。

  2. 1234567 的 987654321 次方的个位数是什么?
    7 乘方的末位数是有规律的。

  3. 寻找恋人
    寻找恋人问题
    寻找恋人问题

  4. 哥尼斯堡七桥问题
    哥尼斯堡七桥问题

本章还介绍了简单奇偶校验的数学原理,在通信中应用很广泛,感兴趣的可以百度了解更多。

第4章 数学归纳法
数学归纳法的基本原理和内容就不多说。
有个小规律记录下:
1 + 2 + 3 + . . . + ( 2 × n − 1 ) = n 2 1+2+3+...+(2 \times n-1)=n^2 1+2+3+...+(2×n1)=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×(n1)×(n2)×...×(nk+1)
P n k = n ! ( n − k ) ! P_n^k=\frac{n!}{(n-k)!} Pnk=(nk)!n!
C n k = n ! ( n − k ) ! k ! C_n^k=\frac{n!}{(n-k)!k!} Cnk=(nk)!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章 什么是程序员的数学(总结篇)
对书本内容进行了总结,读完本书感觉数学是还是很有意思的。
附录:迈向机器学习的第一步
附录简单介绍了机器学习的一些基础知识。机器学习预测问题和分类问题,感知器,梯度下降法,神经网络。
机器学习的简化流程:
机器学习的简化流程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值