【发布时间】:2018-08-03 21:43:01
【问题描述】:
通过在 JavaScript 中应用计算机科学算法,你能解决以下问题吗?
该函数接受正整数或负整数形式的分子和分母。
您不能使用“*”、“/”或“%”。
function divide(num, denom) {
// ...
}
divide(6, 2)
divide(-10, 5)
divide(7, 2)
divide(-5, 10)
我很想知道是否有已知的计算机科学算法可以解决这个问题。
【问题讨论】:
-
对于将其他数均分的数字,这很容易,只需从被除数中重复添加(或减去)除数即可。对于不能均匀除其他数字的数字,我想您可以手动编程长除法(回归到递归加法或减法而不是乘法和除法的函数)
-
检查The approach implement Divide; 方法:不断从被除数中减去除数,直到被除数小于除数。被除数变成余数,减法的次数变成商。 有效方法:使用位操作来求商。除数和被除数可以写成
dividend = quotient * divisor + remainder -
最简单的算法是binary long division,其中,正如维基百科所指出的,每个步骤仅包含比较和可能的减法。
标签: javascript algorithm math computer-science