Я пытаюсь реализовать довольно простой преобразователь десятичных чисел в двоичные, используя следующую рекурсивную функцию:
function dectobin(d) {
if (0 >= d) { return 0; }
else if (1 == d) { return 1; }
else {
return 10 * dectobin(Math.floor(d / 2)) + (d % 2);
}
}
Теперь проблема в том, что когда я тестирую его с 70007, кажется, что некоторое переполнение 1в последней рекурсии, когда последняя запись попадает из стека.Таким образом, как только dectobin (35003) возвращается с 100010001011101, он масштабируется от 10 до 1000100010111010, и предполагается, что 1 будет добавлен.За исключением того, что вместо 1, он добавляет 2, поэтому получается ответ: 1000100010111012. Теперь я проверил свою логику и математику и не нашел в этом никакой ошибки, поэтому у меня есть ощущение, что это внутренняя структура языка, которая вызывает это.ошибка.Так что, если кто-нибудь может помочь мне здесь и объяснить мне, в чём проблема, которая будет наиболее приятной.Заранее спасибо.