问题遇到的现象和发生背景
写一个函数求一个整数的二进制有几个1,我尝试用递归实现,但是结果总是多1
int NumberOf1(int n)
{
if (0 != n)
{
if (1 == n % 2)
{
return 1 + NumberOf1(n / 2);
}
else if (0 == n % 2)
{
return NumberOf1(n / 2);
}
}
}
int main()
{
int n = 10;
printf("%d\n", NumberOf1(n));
return 0;
}
运行结果及报错内容
