问题:什么是余数 余数的作用?

余数在生活中非常常见,日历,日期,其中包含一个定理 同余定理。

同余定理:余数总是在一个固定的范围内,任意两个整数 a 和 b,如果它们除以正整数 m 得到的余数相等,我们就称 a 和 b 对于模 m 同余。

同余定理主要运用于:数据的均分。

模运算最大的特点就是不可逆,https就是利用这个原理通过非对称加密协商出对称密钥的。

在写代码过程中会用到的同余定理。负载均衡算法,分库分表,消息队列顺序消息,一致性hash,数据分页等等

余数在加密算法,随机存储等领域中有广泛应用

迭代法:

迭代法,简单来说,其实就是不断地用旧的变量值,递推计算新的变量值。

下面这张图即表示迭代法的数学函数。

代码实例如下

// 迭代器模式//  兔子数列function fib(month) {    if (month ==1 || month === 2) {        return 1    } else {        return fib(month -1) + fib(month - 2)    }}//  棋盘的复利 等比数列function iterater(num) {    let resNum = 0    let count = 1    for (let index = 0; index < num; index++) {        count*= 2        resNum += count    }    return resNum}

以上这两段代码使用迭代法实现了兔子数列 与棋盘问题的解决。

迭代法具体的应用

  • 求数值的精确或者近似解。典型的方法包括二分法(Bisection method)和牛顿迭代法(Newton’s method)。

  • 在一定范围内查找目标值。典型的方法包括二分查找。

  • 机器学习算法中的迭代。相关的算法或者模型有很多,比如 K- 均值算法(K-means clustering)、PageRank 的马尔科夫链(Markov chain)、梯度下降法(Gradient descent)等等。迭代法之所以在机器学习中有广泛的应用,是因为很多时候机器学习的过程,就是根据已知的数据和一定的假设,求一个局部最优解。而迭代法可以帮助学习算法逐步搜索,直至发现这种解。

    以下以一个面试题为例,

题目:使用迭代法求一个数的算数平方根,给定固定的精度?

    以下是解题思路的图解

在数学中存在二分法进行不同逼近的操作,不停的逼近得数的操作。

以下为代码解题 方法

/** *  * @param {*} num 需要计算的数据 * @param {*} deltaThreshold 误差精度 * @param {*} maxCount 计算 */function getSqureRoot(num,deltaThreshold) {    if (num<=1) {        return 1    }    // 设置最大值    var max = num;    // 设置最小值    var min = 1;    // 设置中间变量    var mid = 0;    // 无限循环    for (; ;) {        // 二分法求中间值        mid = (max +min) /2;        // 得到平方值        var squre = mid* mid;        // 计算精度        detalt = Math.abs((squre/num) -1);        if (detalt<= deltaThreshold) {            break        } else {            if (squre > num) {                max = mid            } else {                min = mid            }        }    }    return mid}

jsp标签 判断 余数_程序员的数学基础课(三)余数与迭代法相关推荐

  1. 极客时间程序员的数学基础课_针对程序员和极客的10个很棒的礼物创意

    极客时间程序员的数学基础课 假期给程序员朋友和家人的一些礼物提示以及购买链接. 照片由freestocks.org在Unsplash上拍摄 大家好,又是一年中的某个时候,我们喜欢与家人和朋友共度时光, ...

  2. 程序员的数学基础课 二进制(自我提升第6天)

    文章目录 程序员的数学基础课 1.左移 2.右移 算数右移: 逻辑右移: 3.或 4.与 5.异或 小结: 程序员的数学基础课 基础思想一知识点: 1.明白2进制对于电脑的意义,首先请回答这个问题(菜 ...

  3. 【程序员的数学基础课-黄申】学习笔记 1-10

    博客内容来自--极客学园>程序员的数学基础课 现在数学在程序员的日常里重要性逐渐显现,但作者不建议去啃大学课本,可以先广度再深度. 作者每节课都用心总结截图如下,建议购买课程更新学习 01讲二进 ...

  4. 程序员的数学基础课之二进制

    本内容来自极客时间 程序员的数学基础课 文末黄申老师总结的笔记 什么是二进制? 十进制计数使用 10 作为基数,二进制使用 2 作为基数,二进制的数位就是 2^n 的形式. 计算机为什么使用二进制? ...

  5. python三大编程语言_程序员最需要的三种编程语言

    随着科学技术的进步和新技术的进步,编程语言的种类越来越多,变化是程序员需要跟踪和学习许多语言 然而,有太多的语言无法一一掌握 在目前的形式中,最需要掌握的三种编程语言是 现在判断还不晚 坦白说,找工作 ...

  6. 程序员的数学全三册密码_阿波罗50年前成功登月,少不了这位硬核女程序员

    大约在50年前的这个时候,1969年7月21日,载着巴兹·奥尔德林和尼尔·阿姆斯特朗的阿波罗11号登月舱正在月球轨道上与CSM和迈克尔·柯林斯会合. 大家都知道这件事,但你知道吗,阿波罗能成功登月的背 ...

  7. 迭代反投影法代码_程序员的数学笔记3--迭代法

    第三节课程,介绍的是迭代法. 03 迭代法 什么是迭代法 迭代法,简单来说,其实就是不断地用旧的变量值,递推计算新的变量值. 这里采用一个故事来介绍什么是迭代法,这个故事是讲述一个国王要重赏一个做出巨 ...

  8. 【程序员的数学基础课-黄申】学习笔记 11-20

    11讲树的深度优先搜索(上):如何才能高效率地查字典 树的组成和深度遍历方式 12讲树的深度优先搜索(下):如何才能高效率地查字典 配合栈进行遍历,大大节省内存 13讲树的广度优先搜索(上):人际关系 ...

  9. 程序员的数学基础课 数学归纳法(自我提升第二十一天)

    这里解释一下为什么一天发的,但是却是一个二十,一个二十一,因为上一篇是我昨天写一半,得睡觉了,所以今天写完才发的. 菜鸟已经感觉手指扛不住了,所以更新完这篇得休息了,读者谅解,话不多说,冲冲冲 文章目 ...

最新文章

  1. 博途项目服务器,博图服务器客户端架构
  2. 计算机网络实验四:利用UDP协议实现点对点聊天
  3. c语言遍历文件obt,二维电子化合物Ca2N和Y2C高压结构研究.pdf
  4. Maven组件通过命令上传本地和私有仓库
  5. Python——rrdtool模块的安装
  6. HDU-1520 Anniversary party(树形DP)
  7. python安装wheel失败_Python安装Pyinstaller失败,Preparing wheel metadata ... error
  8. 5、Fiddler如何捕获HTTPS会话
  9. 【QCustomPlot】1.0 - QCustomPlot库添加到自己的工程、创建工程
  10. linux离线语音识别安装运行总结
  11. linux虚拟主机用织梦,织梦程序用什么虚拟主机很服务器好
  12. 为何HDFS是大数据分析的软肋
  13. 计算机软件系统测试报告模板,测试报告模板
  14. 几种经典病毒动力学模型【基于matlab的动力学模型学习笔记_3】
  15. C#实现调用第三方接口进行短信验证码验证
  16. win7 与xp 互联步骤
  17. S32K144(12)FTM
  18. 数学猜想验证步骤_“猜想——验证” 数学学习的重要方法
  19. Word如何设置单元格垂直居中
  20. Go 1.19 发行说明(翻译)

热门文章

  1. python 经典100例 (61-80)
  2. 在Linux中查看ftp状态,linux中ftp常见操作启动ftp状态,终止ftp会话
  3. 聊聊如何提升推荐系统的结果多样性
  4. 史上最可爱的关系抽取指南?从一条规则到十个开源项目
  5. Spring Boot 1.5.x新特性:动态修改日志级别
  6. 美团点评基于Storm的实时数据处理实践
  7. 闲鱼账号被封怎么办?解封看这里!
  8. 机器阅读理解首次超越人类!云从刷新自然语言处理新纪录
  9. 大规模领域词汇库项目DomainWordsDict:涵盖68个领域、共计916万的词汇库资源开放
  10. 无人驾驶出租车遭警察拦截后欲“潜逃”,AI 是原罪?