The Java implementation recursively computes the number of 1's in the binary representation

  • 2020-04-01 03:51:35
  • OfStack

With the help of Java language, recursive algorithm is used to calculate the number of 1 in the binary representation of integer N


/*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);
    }
  }
}

The simplest, but untested :)


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

}

The above is all the content of this article, I hope you can enjoy it.


Related articles: