0

使用せずに10進数から16進数へのコンバーターを作成しようとしていますNumber.prototype.toString(これはその機能を許可しない割り当てです)。再帰を使用してそれを機能させようとしています。それが意味をなす場合、すべてelseがメインの内部まで機能します。else255 を超える数値 (つまり、16 進数で 2 桁を超える数値) に対して実行すると、そのエラーが発生します。なぜこれが事実なのか誰にも分かりますか?

var number = parseInt(prompt("Give me a number and I will turn it into hexadecimal!"));
var digit = 1;
var hexConverter = function () {
    if (digit === 1) {
        if (Math.floor(number / 16) === 0) {
            console.log(hexDigits[number]);
        } else {
            digit = 16;
            console.log(hexConverter(), hexDigits[number % 16]);
        }
    } else {
        if (Math.floor(number / (digit * 16)) === 0) {
            return (hexDigits[Math.floor(number / digit)]);
        } else {
            return (hexConverter(), hexDigits[number % (digit * 16)]);
        }
        digit = digit * 16;
    }
};
hexConverter();
4

2 に答える 2