解题思路:
解决该题有两种解法,一种是直接递归,0的时候返回0,否则根据奇数偶数判断返回不同的递归操作,代码如下:
class Solution {
public:
int numberOfSteps(int num) {
if(num == 0) return 0;
return num % 2 == 0 ? numberOfSteps(num / 2) + 1 : numberOfSteps(num - 1) + 1;
}
};
循环的话思路是和递归一样的,只是表现方式不同,代码量稍大些,代码如下:
class Solution {
public:
int numberOfSteps(int num) {
int ans = 0;
while(num > 0) {
if(num % 2 == 0) {
num /= 2;
} else num --;
ans ++;
}
return ans;
}
};