gpt4 book ai didi

ruby-on-rails - 使用递归(二进制转换器)在 Ruby 中将 base-10 转换为 base-2

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:19:51 24 4
gpt4 key购买 nike

我想在 Ruby 中将 base10 数字转换为 base2, 使用内置的 to_s(2) 方法,使用递归

我是这样写的:

def to_binary(d)  
if d<1
return ""
else
return to_binary(d/2).to_s + (d%2).to_s
end
end

这将返回除 0 之外的所有正确结果。有没有办法为 0 返回 0 而无需为大于 0 的数字添加前导零?

最佳答案

您可以稍微修改一下检查:

def to_binary(d)  
return d.to_s if [0,1].include?(d) # same as "if d == 0 || d == 1"
to_binary(d/2) + (d%2).to_s
end

to_binary(10) == "1010"
#=> true
to_binary(0) == "0"
#=> true

你也可以把上面的方法写成:

def to_binary(d)  
return d.to_s if [0,1].include?(d)

div,mod = d.divmod(2)
to_binary(div) + mod.to_s
end

关于ruby-on-rails - 使用递归(二进制转换器)在 Ruby 中将 base-10 转换为 base-2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35244133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com