问题描述
给定一个十进制整数,返回其对应的二进制数的位数。例如,输入十进制数9,其对应的二进制数是1001,因此位数是4。
样例输入
9
样例输出
4
数据规模和约定
输入数据中每一个数的范围。
例:输入在int表示范围内。
分析:利用二进制移位计算,每次向右移动一位,直到为0为止,返回移位的次数cnt~
#include <iostream>
using namespace std;
int dfs(int n, int cnt) {
if (n == 0) return cnt;
return dfs(n >> 1, cnt + 1);
}
int main() {
int n;
cin >> n;
cout << dfs(n, 0);
return 0;
}
本文介绍了一种使用递归方法将十进制整数转换为其二进制表示,并计算二进制位数的算法。通过不断右移直至数值为0,返回移位次数即为所求位数。
587

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



