递归:
int firstset(int bits) { return (bits & 0x80000000) ? 31 : firstset((bits << 1) | 1) - 1;}- 假设
[31,..,0]
索引 - 如果未设置任何位,则返回-1
| 1
通过限制移位数直到1
达到a 来防止堆栈溢出(32)- 不尾递归:)

递归:
int firstset(int bits) { return (bits & 0x80000000) ? 31 : firstset((bits << 1) | 1) - 1;}[31,..,0]索引
| 1通过限制移位数直到
1达到a 来防止堆栈溢出(32)