想知道是否有人可以帮助我创建一个伪代码,说明如何对n位二进制整数进行除法。这是我想现在可能会起作用的方法,如果我错了,有人可以纠正此问题:
divide (x,y)
if x=0: return (0,0) //(quotient, remainder)
(q,r) = divide(floor(x/2), y)
q=2q, r=2r
if x is odd: r = r+1
if r >= y: r = r-y, q = q+1
return (q,r)
你们会说这种通用的伪代码算法可以完成将n位数字相除的预期任务,还是在我开始编码错误的东西之前在伪代码中丢失了某些东西?
最佳答案
除了显而易见的东西(不检查是否除以零,不处理负数)之外,它似乎还在工作。我通过将其应用到以10为底的数字来说服自己。