java中实现递归计算二进制表示中1的个数

      2019-12-03 20:29      JAVA编程
这是一个很有意思的问题,是在面试中特别容易被问到的问题之一,解决这个问题第一想法肯定是一位一位的去判断,是1计数器+1,否则不操作,跳到下一位,十分容易,编程初学者就可以做得到!

借助Java语言,运用递归算法计算整数N的二进制表示中1的个数

/*use the recursive algorithme to calculate  * the number of "1" in the binary expression * of an Integer N. * Note:if N is an odd, then * the result is the result of N/2 plus 1. * And the program use the bit operation to * improve efficency ,though it's seemingly * not necessary ,but the idea I think is good. * The program is writed by Zewang Zhang ,at * 2015-5-4,in SYSU dorms. */ public class CalculateNumberInBinaryExpression {  //Main method.  public static void main(String[] args) {         //For example ,make N equals 13 ,the result shows 3    System.out.println(numOfEven(13));         //For example ,make N equals 128 ,the result shows 1    System.out.println(numOfEven(128));  }     //The static method of numOfEven is the recursive method.  public static int numOfEven(int x) {         //The base of recursive.    if(x==0) {      return 0;    }         //If x is an odd.    else if(x%2!=0) {      return numOfEven(x>>1)+1;    }         //If x is an even except 0.    else {      while(x%2==0) {        x=(x>>1);      }      return numOfEven(x);    }  }}

来个最简单的,不过未测试:)

public int a(int i){    if(i==0||i==1) return i;    return i%2+a(i/2);}

以上所述就是本文的全部内容了,希望大家能够喜欢。


上一篇:kettle中使用js调用java类的方法

下一篇:没有了