求一个数的二进制表示中有多少个1? 这个问题基于一个事实,就是对于一个数N, 如果是奇数,那么它的二进制表示就比N/2多一个1,所以这个问题用递归是最容易编写的,下面是实现:
public static int findone(int num) {
if(num == 0) {
return 0;
}
return (num % 2 == 0) ? findone(num/2) : (findone(num/2) + 1);
}