源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-08-24 05:12 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java中实现递归计算二进制表示中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);

}
以上所述就是本文的全部内容了,希望大家能够喜欢。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部