мучался, мучался, родил этот код. если убрать условие в главной функции(не рекурсии), то после цифры 16 конвертер работает некорректно(его нужно реверсить) сам код:
let count = 0;
let array = [];
let rez;
let recurs = numbers =>
{
rez = 0;
if(numbers % 2 == 0)
{
rez = numbers/2;
array.push(0);
if(rez > 1)
{
recurs(rez);
}
if(rez == 1)
{
array.push(1);
}
//console.log(rez);
}
if(numbers % 2 != 0)
{
rez = Math.floor(numbers/2);
array.push(1);
if(rez /1 > 1)
{
console.log("bam");
recurs(rez);
}
if(rez == 1 && numbers != 1)
{
array.push(1);
}
}
return array.reverse();
}
function sumTwoSmallestNumbers(numbers) {
count = 0;
array = [];
if(numbers < 16)
{
return recurs(numbers);
}
else
{
return recurs(numbers).reverse();
}
}
console.log(sumTwoSmallestNumbers(356));
Вот пример функции - результат строка
let decToBinary = number =>
{
if(number >= 1) {
//Если не делится на два, то добавляем 1
if (number % 2==1) {
return decToBinary((number - 1) / 2) + 1;
} else {
return decToBinary(number / 2) + 0;
}
} else {
return '';
}
}
Функция - результат массив
let decToBinaryArr = number =>
{
res=[]
let recursion = number =>{
if(number >= 1) {
//Если не делится на два, то добавляем 1
if (number % 2==1) {
res.push(1);
return recursion((number - 1) / 2);
} else {
res.push(0);
return recursion(number / 2);
}
} else {
return 0;
}
}
recursion(number);
return res.reverse();
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей