借助 Java 语言 , 运用递归算法计算整数 n 的二进制表示中 1 的个数
/ * Use o algoritmo recursivo para calcular * o número de "1" na expressão binária * de um número inteiro N. * Nota: Se n é um ímpar, então * o resultado é o resultado de N/2 mais 1. * e O programa usa a operação de bits para * melhorar a eficácia, embora aparentemente não seja * necessário, mas a idéia que eu acho é boa. * O programa é escrevendo por Zewang Zhang, em * 2015-5-4, em dormitórios de Sysu. */classe pública CalculateNumberInBinaryExpression {// Método principal. public static void main (string [] args) {// Por exemplo, faça n igual a 13, o resultado mostra 3 system.out.println (numefeven (13)); // Por exemplo, faça n igual a 128, o resultado mostra 1 sistema.out.println (numefeven (128)); } // O método estático do NUMOFEVE é o método recursivo. public static int numefeven (int x) {// a base de recursivo. if (x == 0) {return 0; } // Se x é um ímpar. caso contrário, if (x%2! = 0) {return nmofeven (x >> 1) +1; } // se x é um mesmo exceto 0. else {while (x%2 == 0) {x = (x >> 1); } retorna numefeven (x); }}}
来个最简单的 , 不过未测试 : : : : : :
public int a (int i) {if (i == 0 || i == 1) return i; retornar i%2+a (i/2);}
以上所述就是本文的全部内容了 , 希望大家能够喜欢。