热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

好玩的数学--程序员篇

Computer-ComMath第1章0的故事--无即是有需求--问题:为什么我们需要发明计数法呢?数越大就越难处理,将大问题分解成小“单元”;方法论之一:“问题分解法”;

Computer - ComMath

第1章 0的故事--无即是有

需求--问题:为什么我们需要发明计数法呢?

数越大就越难处理,将大问题分解成小“单元”;

方法论之一:“问题分解法”;

数字本身即是容器,并无实际意义;真正有意义的在于使用者;

 

进制

2进制:机器数字;逢二进位;两种数字;

10进制:阿拉伯数字;常用进制,适用我们使用手指个数;

--60进制:罗马数字;逢60进位;实例:时间应用60进制;

应用:进制数转换;

 

0

大多数机器对于0的处理都有自己的一套方法论,会进行特殊处理;

指数--10的0次方是多少?0次方的意义,基数的几分之一;

作用:占位--统一标准,简化规则;实例:吃药问题;

 

第2章 逻辑--真与假的二元世界

机器逻辑--布尔逻辑;

AI逻辑--模糊逻辑;实例:偶尔;经常;非常频繁; 设计对应数值:0.1;0.5;0.9;

需求--问题:为何逻辑如此重要?

逻辑是消除歧义的工具;

我们平时使用的语言--自然语言,是极易产生歧义的;

规格说明书(记述如何编写程序的文件)一般都是用自然语言描述的;因此,程序员必须走出自然语言的歧义的迷宫,谨慎解读规格说明书,确定其正确的意义;

“逻辑”是消除自然语言的歧义、严密准确的记述着事物的工具;假如尝试使用逻辑语言(逻辑表达式)来重新解释规格说明书,有时就会发现其中存在歧义或矛盾的地方;另外,借助逻辑还能够将复杂的规格说明书转换成简单易懂的形式;

程序员处于人类和计算机的分界线上;只要做到逻辑性的思考和表达,就不会为常识和感情所困,从而写出符合要求的规格说明和程序;程序员应该努力将问题转化为程序,让计算机有活可干;

乘车费用问题--兼顾完整性和排他性;
学习逻辑的基本思路:兼顾完整性和排他性;

命题及其真假--能够判断对错的陈述句叫做命题;

 

命题正确时,该命题为“真”;反之,命题不正确时,称该命题为“假”;也将“真”称作 true ,“假”成为 false;

有没有“遗漏”;
有没有“重复”;
画一根数轴辅助思考;
确认没有“遗漏”和“重复”是相当重要的。在查看乘车费用规则这类说明时,在阅读文字的同时,最好像下面那样 画一根数轴;

注意边界值
通过数轴,我们可以看到边界值是需要注意的;

兼顾完整性和排他性
没有“遗漏”,即具备完整性;
没有“重复”,即具备排他性;

使用if语句分解问题
逻辑的基本是两个分支;If-else;true or false

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

文氏图

与 或 非 异或 蕴含 相等;

德.摩根定律
“非A”或者“非B”,和非“A与B” 是等价的;
“非A”并且“非B”,和非“A或B” 是等价的;

对偶性
分别将true和false、A和非A、且和或进行互换,就能够得到该逻辑表达式的否定式;

卡诺图

包含未定义的逻辑
true 真
false 假
undefined 未定义
三值逻辑

方法论之二:布尔逻辑;与或非;

 

第3章 余数--周期性和分组

运用余数,大数字的问题就能简化成小数字问题;

 

第4章 数学归纳法--如何征服无穷数列

1.基底的证明;

2.归纳的证明;

 

第5章 排列组合 --解决计数问题的方法
加法法则
乘法法则
置换
阶乘
排列
树形图
组合
置换和排列都要考虑顺序,不考虑顺序的方法--组合;

第6章 递归 --自己定义自己
递归和归纳的本质是相同的,都是“将复杂问题简化”;

斐波那契数列
F(0)=0 
F(1)=1
F(n)=F(n-1)+F(n-2) n>=2,n属于实数

第7章 指数爆炸 --如何解决复杂问题
指数爆炸是指数字呈爆炸式增长;

二分法查找--利用指数爆炸进行查找;

密码 --利用指数爆炸加密;
现在使用的密码,是俗称“秘钥”的随机字节流来加密的;

 

总结:

If判断的语句块,用于形成的逻辑分支;

for进行的语句块,用于解决重复性问题;

方法论之一:“问题分解法”--数越大就越难处理,将大问题分解成小“单元”;

方法论之二:逻辑--布尔逻辑;与或非;等等;模糊逻辑;

 

参考文献

--《程序员的数学》.(日)结城浩


DedoChen

仰望星空

砥砺前行

如需转载,请注明出处,谢谢!


推荐阅读
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 程序员妻子吐槽:丈夫北漂8年终薪3万,存款情况令人意外
    一位程序员的妻子在网上分享了她丈夫在北京工作八年的经历,月薪仅3万元,存款情况却出乎意料。本文探讨了高学历人才在大城市的职场现状及生活压力。 ... [详细]
  • 本文详细探讨了Netty中Future及其子类的设计与实现,包括其在并发编程中的作用和具体应用场景。我们将介绍Future的继承体系、关键方法的实现细节,并讨论如何通过监听器和回调机制来处理异步任务的结果。 ... [详细]
  • 本文介绍如何在 Unity 的 XML 配置文件中,将参数传递给自定义生命周期管理器的构造函数。我们将详细探讨 CustomLifetimeManager 类的实现及其配置方法。 ... [详细]
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文详细探讨了Java中StringBuffer类在不同情况下的扩容规则,包括空参构造、带初始字符串和指定初始容量的构造方法。通过实例代码和理论分析,帮助读者更好地理解StringBuffer的内部工作原理。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 深入了解 Windows 窗体中的 SplitContainer 控件
    SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文探讨了在Linux系统上使用Docker时,通过volume将主机上的HTML5文件挂载到容器内部指定目录时遇到的403错误,并提供了解决方案和详细的操作步骤。 ... [详细]
  • 作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ... [详细]
  • 本文探讨了在 ASP.NET MVC 5 中实现松耦合组件的方法。通过分离关注点,应用程序的各个组件可以更加独立且易于维护和测试。文中详细介绍了依赖项注入(DI)及其在实现松耦合中的作用。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
author-avatar
武艺最新单曲问月09
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有