【发布时间】:2017-01-26 02:31:42
【问题描述】:
我目前正在尝试编写一种在 Ruby 中将十进制数转换为二进制数的方法。但是,它应该可以在不使用 Ruby 的 .to_s(2) 函数的情况下工作,并且它应该是递归方法而不是循环。而且,第一个数字不能是0,而是应该从1开始。代码如下:
def to_binary(d)
binary = (d % 2).to_s
if d == 0
return binary
elsif d == 1
return 1.to_s
else
return binary = binary + to_binary(d/2).to_s
end
return binary.to_i
end
当第一个 d % 2 实际上是 1 时,大多数情况似乎都是正确的,但不是全部。如何删除前 0 并使其正常工作?
【问题讨论】:
-
请注意,您可以删除最后一条语句,因为它永远不会被执行。此外,您不需要任何
return关键字。考虑在此处使用case语句:case d; when 0 then binary; when 1 then "1"; else binary + to_binary(d/2).to_s; end。
标签: ruby recursion binary decimal