我编写了一个迭代程序,用于计算 argv[1]
中给出的整数的二进制中 1 的数量。 ,我的迭代版本运行良好,但我无法弄清楚如何使函数递归。
我尝试使用 if 语句更改函数
#include <stdio.h>
#include <stdlib.h>
int bitcount( int x ) {
unsigned int count = 0 ;
count += x & 1;
x >>= 1 ;
if ( x > 0 ) {
bitcount( x ) ;
}
return count ;
}
int main( int argc, char *argv[] ) {
int b ;
b = atoi( argv[1] ) ;
b = bitcount ( b ) ;
printf( "%d\n", b ) ;
return 0 ;
}
我的迭代程序给了我正确的答案,但无论我使用什么数字,该程序都会打印 1。
最佳答案
问题是您没有使用 bitcount
函数的返回值。改变
bitcount( x ) ;
for count += bitcount( x ) ;
关于c - 用于计算整数中 1 位的递归程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58350043/