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

借助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);

}

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
递归计算
java实现递归树形结构、java递归实现n的阶乘、java实现递归、java递归实现tree删除、java递归实现组合算法,以便于您获取更多的相关知识。

时间: 2024-09-25 16:47:51

java中实现递归计算二进制表示中1的个数_java的相关文章

剖析Java中HashMap数据结构的源码及其性能优化_java

存储结构首先,HashMap是基于哈希表存储的.它内部有一个数组,当元素要存储的时候,先计算其key的哈希值,根据哈希值找到元素在数组中对应的下标.如果这个位置没有元素,就直接把当前元素放进去,如果有元素了(这里记为A),就把当前元素链接到元素A的前面,然后把当前元素放入数组中.所以在Hashmap中,数组其实保存的是链表的首节点.下面是百度百科的一张图: 如上图,每个元素是一个Entry对象,在其中保存了元素的key和value,还有一个指针可用于指向下一个对象.所有哈希值相同的key(也就是

一个在C#以及类似的面向对象系統(Java中估计也是如此)中常见的错误

错误|对象   using System; namespace demo{    class ClassA    {        protected string a = "test";         public void Display()        {            Console.WriteLine(a);        }    }     class ClassB:ClassA    {        protected string a = "a

java怎样用常量接收集合中的信息?

问题描述 java怎样用常量接收集合中的信息? java怎样用常量接收集合中的信息?需求是:用for循环将座位牌号以"1-1"的形式输出,将这些信息放到集合中,选择座位牌号的时候判断有没有这个座位<<< 解决方案 首先向list中放值 /*** 将座位号放入ArrayList中* @param row 座位的行数* @param colu 座位的列数* @return 设置好数据的List */ public List setList(int row int colu

堆栈 日志 反射-java能否动态的在程序中获得出错的值(入参)

问题描述 java能否动态的在程序中获得出错的值(入参) 现在想对项目中的日志进行改造.方便出问题时的解决效率.(出问题时每次都要对错误进行复现.尤其是流程很长的时候.花了大量的时间和精力). 举个简单的例子. public class 人 { private String 身高; private String 体重; private int 年龄; public String get身高() { return 身高; } public void set身高(String 身高) { this.

Java的Spring框架中AOP项目的一般配置和部署教程_java

0.关于AOP面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),是软件开发中的一个热点,也是Spring框架中的一个重要内容.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. AOP是OOP的延续. 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等. 主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对

java题,如何将数组中的数据格式化输出?(有代码)

问题描述 java题,如何将数组中的数据格式化输出?(有代码) 例如这串代码 import java.util.*; class gongzi{ public static void main(String[] args){ Scanner kb=new Scanner(System.in); int n=kb.nextInt(); int i; String k=""; for(i=0;i<n;i++){ String name=kb.next(); String f=name

问一个java gui问题,在一个窗体中,两个conboBox,改变上一个,怎么让下面一个显示为空。

问题描述 问一个java gui问题,在一个窗体中,两个conboBox,改变上一个,怎么让下面一个显示为空. 问一个java gui问题,在一个窗体中,两个conboBox,改变上一个,怎么让下面一个显示为空.是看起来为空 解决方案 你需要把它们放在同一个panel里把 然后就可以得到你想要的结果

java代码-Java GUI如何将文件中的内容读入Jtable中

问题描述 Java GUI如何将文件中的内容读入Jtable中 文件中有四列信息,分别是不同的数据类型,想要用DefaulttableModel读进去,但是构造函数需要一个二维数组以及一个一维数组,二维数组那个地方由于只能定义一种类型,但是需要的数据有多种类型,不知道应该怎样解决了

遗传算法中如何利用二进制进行对下面问题的编码

问题描述 遗传算法中如何利用二进制进行对下面问题的编码 我利用遗传算法做一个优化(将一定尺寸范围内的矩形<先假设是6块矩形,实际当中是用户随机输入的>摆放在固定尺寸的平台上)这种类型我改怎么样编码 我是这样做 0(表示矩形的横竖状态)000(X轴坐标) 000 (Y轴坐标)00000(矩形长)00000(矩形宽) 但是好像还是描述的不全 而且位数太长 解决方案 利用遗传算法解决TSP问题遗传算法解八皇后问题 解决方案二: 才18位啊,一个int就是4个字节,32位呢,应该足够了吧,我觉得你这样