题目:
解析:
题目的意思就是,十进制转二进制, 最后输出二进制中1 的个数
代码说明
-
方法一:
使用js的库函数, parseInt(str).toString(2) 将数字转为二进制的字符串
最后使用正则匹配,求出1的个数 -
方法二:
递归,具体看代码
代码产出:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function (line) {
// console.log(fn(line))
// 方法一
let res = parseInt(line).toString(2).match(/1/g);
let count = !res ? 0 : res.length;
console.log(count)
});
// 方法二,递归
var fn = (line) => {
if (Number(line) === 0) {
return 0
} else {
var temp = 0
for (var i=0;Number(line) > temp;i++) {
temp = Math.pow(2, i)
}
if (Number(line) === temp) {
return 1
} else {
return 1 + fn(Number(line) - Math.pow(2, i - 2))
}
}
}