我目前正在嘗試編寫一個方法,在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;當0則二進制;當1則爲「1」時; else binary + to_binary(d/2).to_s; end'。 –