基数変換のアルゴリズムの問題
アルゴリズムの問題の回答に納得がいきません。
変換対象をDEC、基数をBASEに格納し、基数変換を行うというものです。
配列Bの添え字は「1」から始まり、DECをBASEで割った余りを
求める関数MODはあらかじめ用意されているものとする。
1.変数Iに1を格納、変数DECに変換対象を格納、変数BASEに基数を格納。
2.MOD(DEC,BASE)の結果を変数Nに格納。
3.NをB(I)に格納。
4.I + 1 をIに格納。
5.「 」の結果を変数DECに格納。
6.DEC=0なら処理終了、それ以外は(2) の処理へ戻る。
「 」内を埋める問題です。
私の答えは「(DEC - N) / BASE」だったのですが、正解は「DEC / BASE」でした。
DECからN(余り)を引いてからBASEで割らないと、
割り切れない場合、最悪いつまで経っても「DEC=0」にはならなくなってしまうと思うのですが、そうではないのでしょうか?
正解は「DEC / BASE」で、あっているのでしょうか?
Perlでプログラムを書いて(配列Bの添え字は0からにして、whileの条件式を「DEC != 0」にしました)試してみましたが、
「DEC / BASE」だと、割り切れない場合、結果の0の数がえらいことになってしまいました(^^;)
ちゃんと勉強し始めたのがつい最近なので説明がうまくできませんが、どなたか解るかた教えてくださいm(_ _)m