| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> JAVASCRIPT遇到《九章算术》-卷第一 方田 (2)约分 -> 正文阅读 |
|
[JavaScript知识库]JAVASCRIPT遇到《九章算术》-卷第一 方田 (2)约分 |
原文:
“约分”简单来定义,就是通过计算使一个分数的分子、分母不存在除1以外的公约数。 把约分术提到的方法,按步骤梳理出来,就是: 1、分子、分母都是偶数的,同时除以2,重复这个步骤,直到分子、分母出现奇数; 2、分子、分母中存在奇数时,用其中较大的数减较小的数; 3、用上一步得出的差和上一步的减数进行比较,用其中较大的数减较小的数; 4、重复步骤3,直到减数与差相等; 5、用步骤2中的分子、分母同时除以步骤4中最终得到的差,得到约分的结果。 这是我们遇到的第一个计算过程逻辑比较复杂的问题,用表达式来描述这个过程不太合适,可以用伪代码来描述。 伪代码:
接下来用实际的代码来实现这个功能。 编程语言中原生数据类型没有分数这个数据类型,我们可以创建一个用于表示分数的类或结构体,然后以这个分数类作为输入输出的类型;更简单粗暴的方式是直接把分子、分母作为两个整型数据作为传入参数和返回值。 我这里以包含分子、分母两个字段的json作为参数,本质就是第二种方式。 针对错误输入和特殊输入,需要进行处理。 输入中包含分子、分母的数值,所以需要判断分母不能为0。(强类型语言形参会筛选传入参数类型,不需要单独判断是否是整数,这里就先不筛选输入是否是整数了。)分子为0时,约分结果也是0;分子等于分母时,约分结果为1。 另外,原文的计算方法没有考虑负数,我们需要考虑对于输入负分数做处理。为了应对负分数作为参数的情况,可以在分子、分母存在奇数时求最大公约数的运算中,取绝对值进行计算,这样就不会受正负数的影响。(正负数不会影响同时除以2的操作,所以分子、分母都是偶数时,不用考虑这个问题。)前面特殊输入判定“分子等于分母”,也需要改变为“分子、分母绝对值相等”,相应处理改??为返回“分子/分母”,就是包含正负号的1。 需要代码源文件的小伙伴可以关注我的微信公众号: JianMing-95 输入:{分子,分母} 输出:{约分后的分子,约分后的分母} 基础版代码:
调用代码及运行结果:
上面约分的过程可以概括地分为两个运算:求分子、分母的最大公约数,用分子、分母同时除以最大公约数。 求最大公约数我们在其他的地方也可能用到,所以我们可以把求最大公约数的运算提取出来,封装为一个方法,方便后面复用。 很明显,求最大公约数的方法,输入为要求公约数的两个整数,输出为最大公约数。 约分方法输入输出不变。 约分方法: 输入:{分子,分母} 输出:{约分后的分子,约分后的分母} 求最大公约数方法: 输入:{整数1,整数2} 输出:{最大公约数} 晋级版代码: 约分方法:
求最大公约数方法:
调用代码及运行结果:
|
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:24:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |