视频地址
https://www.bilibili.com/video/BV1Xx41117tr
在设计一个复杂的计算机系统的时候,如果是要处理分数之间的计算,要如何实现呢?
文中给出了一种假设法
假设有一个函数MAKE-RAT(第一行),用于记录这个分数,N和D变量表示分子和分母,使用愿望思维,不必关心他是如何实现的,你就当他已经实现了
如何第二行和第三行的NUMER和DENOM分别是MAKE-RAT下的方法,用于取出MAKE-RAT表示的分子和分母
所以这么做的好处是什么呢?
比如我们要使用XY(XY都是分数),我们就可以使用MAKE-RAT用分子乘分子,分母乘分母
( (NUMER X)(NUMER Y))
(*(DENOM X)(DENOM Y))
这么做有什么好处吗?
试问如果不用这种表示方式,每个分子和分母都用不同的变量名来命名我们会得到
那只要进行一个分数乘法就需要四个变量来记录,这对于我们的使用是非常繁琐不必要的。如果这样的捆绑数据20个为一组?那还咋用
好的,那么现在,我们给MAKE-RAT命名为有理数的构造函数
NUMER 和 DENOM 为选择函数
现在使用这两种方式进行编程
MAKE-RAT定义一个A和B再使用+RAT来计算得出的结果,我们会发现得到的不是想要的3/4而是6/8
因为+RAT只是把分子乘分母的和(1x4+1x2) 和分母乘分母(2x4)拼接在一起并没有进行约分,那么可以进行改进,改进后为