#include <stdio.h>
int fun(int num)
{
static int count=0;
//每一位与1判断
if(num % 2 & 1 == 1)
{
count++;
}
//除二判断下一位
if(num >> 1 >= 2)
fun(num >> 1);
//判断最后一位
if(num >> 1 == 1)
{
count++;
}
return count;
}
int main()
{
int i;
int n;
printf("Enter a number:\n");
scanf("%d",&i);
n = fun(i);
printf("有1的位数=%d\n",n);
return 0;
}
int fun(int num)
{
static int count=0;
//每一位与1判断
if(num % 2 & 1 == 1)
{
count++;
}
//除二判断下一位
if(num >> 1 >= 2)
fun(num >> 1);
//判断最后一位
if(num >> 1 == 1)
{
count++;
}
return count;
}
int main()
{
int i;
int n;
printf("Enter a number:\n");
scanf("%d",&i);
n = fun(i);
printf("有1的位数=%d\n",n);
return 0;
}
本文介绍了一个使用递归方法来计算整数二进制表示中1的个数的C语言程序。该程序首先定义了一个静态变量用于累计1的出现次数,然后通过位操作检查每一位是否为1,并递归地将数字右移直到所有位都被检查。最后程序输出了1的总数。
410

被折叠的 条评论
为什么被折叠?



