想知道是否有人可以帮助我创建一个伪代码,说明如何对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为底的数字来说服自己。

10-06 05:04