2014-01-21 4 views
0

Я пытаюсь создать рекурсивную двоичную децимальную функцию. Вот моя текущая попытка:Создание рекурсивной двоичной децимальной функции

function decToBin(num){ 
    if(num >= 1){ 
     (num % 2); //I have to STORE? this somewhere 
     decToBin(Math.floor(num/2)); 
    } 
    // return my stored value here 


} 

Я хочу взять по модулю нового числа каждого, пока он не равен 0. Как хранить каждый проход функции? Я просто делаю глобальную переменную вне сферы действия функции, или есть лучший способ? Благодаря!

ответ

1

Обычно с рекурсивными функциями вы объединяете «текущее значение» с возвращаемым значением следующей итерации. Итак, вы берете все «возвращаемые значения» и объединяете их все вместе.

В этом случае, вы хотите что-то вроде:

return decToBin(Math.floor(num/2))+(num % 2); 

Таким образом делает всю функцию:

function decToBin(num){ 
    if(num >= 1){ 
     return decToBin(Math.floor(num/2))+(num % 2); 
    } 
    return ''; 
} 
+0

спасибо за ответ. Есть ли у вас какие-либо идеи по учету 0? – HelloWorld

+0

@Codey: вы можете изменить 'return '';' to 'return '0';'. –

Смежные вопросы