借助java语言,运用递归算法计算整数n的二进制表示中1的个数
/ *使用递归算法计算 *整数N的二进制表达式 *中的“ 1”的数量。 *注意:如果n是奇数,则 *结果 *结果是N/2加1的结果。该程序使用BIT操作来 *提高效率,尽管似乎不是必需的,但是我认为的想法很好。 *该程序由Zewang Zhang编写,在 * 2015-5-4,在Sysu宿舍中。 */公共类CACLATENUMBERINBINAL EXPEXPRESSION {// MAIM方法。 public static void main(string [] args){例如,使n等于13,结果显示3 system.out.println(numofeven(13)); //例如,使N等于128,结果显示1 System.out.println(numofeven(128)); } // numofeven的静态方法是递归方法。 public static int numofeven(int x){//递归的基础。如果(x == 0){返回0; } //如果x是奇数。否则if(x%2!= 0){返回numofeven(x >> 1)+1; } //如果x为偶数0。else {while(x%2 == 0){x =(x >> 1); }返回numofeven(x); }}}}
来个最简单的,不过未测试::
public int a(int i){if(i == 0 || i == 1)返回i;返回i%2+a(i/2);}
以上所述就是本文的全部内容了,希望大家能够喜欢。