You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言递归统计16位整数置位bit个数 代码模板填空问题

16位整数置位个数递归函数填空解答

你给出的(1)(3)空的初步判断都是正确的,第(2)空的核心逻辑是判断当前整数x的第n个二进制位是否为1,推荐两种合法写法:

  • 写法1:(x >> n) & 1
    原理:把x右移n位,让第n位落在最低位的位置,再和1做按位与运算,结果为1就说明该位是1。
  • 写法2:x & (1 << n)
    原理:把1左移n位得到只有第n位为1的掩码,再和x做按位与运算,结果非0就说明该位是1。

完整填空后的参考代码:

int dlukim(int x, int n, int count)
{
    if (n > 16)
        return count; // 空(1)答案
    else
    {
        if ( (x >> n) & 1 ) count++; // 空(2)答案,也可替换为x & (1 << n)
        n++; // 空(3)答案
        return dlukim(x, n, count); // 空(4)填x,注意原模板漏写return和分号,否则递归返回值会丢失
    }
}

调用说明

初始调用时传入n=0、count=0即可,例如dlukim(待统计的整数, 0, 0)会返回对应置位个数。

内容的提问来源于stack exchange,提问作者adirk1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:54:07