想知道是否有人可以帮我创建一个如何分割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位数字的预期任务,或者在我开始编写错误的东西之前我在伪造的代码中遗漏了什么?
答案 0 :(得分:1)
除了明显的东西(不检查除零,不处理负数),它似乎工作。我只是将它应用于基数为10的数字,这让我信服。