借助 Java 语言 , 运用递归算法计算整数 n 的二进制表示中 1 的个数
/ * Gunakan algoritme rekursif untuk menghitung * jumlah "1" dalam ekspresi biner * dari integer N. * Catatan: Jika n adalah ganjil, maka hasilnya adalah hasil dari n/2 plus 1. * dan dan Program menggunakan operasi bit untuk * meningkatkan efisiensi, meskipun tampaknya * tidak perlu, tetapi ide yang saya pikir baik. * Program ini ditulis oleh Zewang Zhang, di * 2015-5-4, di asrama Sysu. */kelas publik CalculateNumberInbinaryExpression {// Metode Utama. public static void main (string [] args) {// misalnya, membuat n sama dengan 13, hasilnya menunjukkan 3 system.out.println (numofeven (13)); // Misalnya, buat N sama dengan 128, hasilnya menunjukkan 1 system.out.println (numofeven (128)); } // Metode statis Numofeven adalah metode rekursif. public static int numofeven (int x) {// basis rekursif. if (x == 0) {return 0; } // Jika x ganjil. lain jika (x%2! = 0) {return numofeven (x >> 1) +1; } // Jika x adalah genap kecuali 0. Else {while (x%2 == 0) {x = (x >> 1); } return numofeven (x); }}}
来个最简单的 , 不过未测试 :
publik int a (int i) {if (i == 0 || i == 1) return i; return i%2+a (i/2);}
以上所述就是本文的全部内容了 , 希望大家能够喜欢。