【发布时间】:2012-03-23 14:51:08
【问题描述】:
我正在尝试使用以下递归函数实现一个相当简单的十进制到二进制转换器:
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错误。因此,如果有人可以在这里帮助我并向我解释最令人满意的问题是什么。提前致谢。
【问题讨论】:
-
...或者您可以简单地使用:
70007..toString(2)
标签: javascript algorithm recursion binary decimal