借助java语言、运用递归算法计算整数n的二进制表示中1的个数
/ *再帰アルゴリズムを使用して *整数Nのバイナリ式の「1」の数を計算します。 *注:nが奇数の場合、 *結果はn/2 plus 1。プログラムはビット操作を使用して効率性を向上させますが、 *必要ではありませんが、私が思うアイデアは良いと思います。 *このプログラムは、Zewang ZhangがSysu寮の * 2015-5-4で書いています。 */public class calculateNumberInbinaryExpression {//メインメソッド。 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){//再帰の基盤。 if(x == 0){return 0; } // xが奇妙な場合。 else if(x%2!= 0){return 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)return i; I%2+a(i/2);}を返します
以上所述就是本文的全部内容了、希望大家能够喜欢。