以下の除算アルゴリズムでは、qとrに2つの演算を掛ける理由とxが奇数の場合にrをインクリメントする理由を理解できません。2つのnビット数の再帰除算アルゴリズム
この再帰除算アルゴリズムの理論的正当性を教えてください。
ありがとうございます。
function divide(x, y)
if x = 0:
return (q, r) = (0, 0)
(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)
アルゴリズムを理解できない場合は、紙と鉛筆で動作するようにしてください。ヒント:バイナリ表現で数値を扱っています。 – Paul