我想在js中編寫一個遞歸函數來計算二進制表示的十進制數。JavaScript中的十進制到二進制遞歸函數
我還是設法通過來解決這個問題:
var t = (function f(n, s)
{
return((s = (n % 2) + s) && (n == 0)) ? s : f(Math.floor(n/2), s);
})(4, '');
console.log(t);
小提琴:http://jsbin.com/ihezev/3/edit
但是,我無法擺脫的前導零的。
所以如果我用7執行IIFE,它會產生:0111
,我想要111
。
我該如何擺脫領先的0
?
(不字符串替換解決方案吧。我想,我可以保持它儘可能多的優雅..我知道我可以做alert(Number(234).toString(2))
,但這個問題被標記爲遞歸。)
woooo .....非常漂亮+ 1 –
@RoyiNamir它可以的,如果我們忽略更加優雅括號'N%2 + s' :) – VisioN
你能解釋'~~(n/2)'中的技巧嗎? –