题解 | #查找输入整数二进制中1的个数#
查找输入整数二进制中1的个数
https://www.nowcoder.com/practice/1b46eb4cf3fa49b9965ac3c2c1caf5ad
两种方法:
const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; void (async function () { // Write your code here while ((line = await readline())) { let str = parseInt(line); // 第一种方法,用系统库函数 // let toER = str.toString(2); // console.log(toER.match(/1/g).length); // 第二种方法,找出规律,递归调用 let res = toER_W(str); console.log(res); function toER_W(n) { if(n==1||n==2){ return 1; } if (n % 2 == 0) { // 如果是偶数,那么和它除以2后 再转换成二进制所包含的1的数量一直,比如 22 和 11 转换成二进制后所包含的 1 的数量一致。 return toER_W(n / 2); } else { let res = parseInt(n/2); // 千万别忘了parseInt,否则进入死循环 return 1 + toER_W(res); } } } })();