数据结构与算法分析Java版练习1.5

package ch01;

/**
 * 练习1.5 编写一种递归方法,它返回数N的二进制表示中1的个数。利用这样的事实:
 *         如果N是奇数,那么其1的个数等于N/2的二进制表示中1的个数加1.
 *
 */
public class EX15 {
	public static int f(int n) {
		if (n == 0)
			return 0;
		if (n == 1)
			return 1;
		
		if (n % 2 == 0)
			return f(n/2);
		else 
			return f(n/2) + 1;
	}
	
	public static void main(String[] args) {
		for (int i = 0; i <= 16; ++i) {
			System.out.println(i + ": " + Integer.toBinaryString(i) +"   " + f(i));
		}
	}
}

猜你喜欢

转载自blog.csdn.net/zhangyingli/article/details/48086631