点击打开链接
//分奇偶函数递归
class Solution {
public:
int integerReplacement(int n) {
if(n==1) return 0;
if(n==INT_MAX) return 32;
int r=0, rr=0;
int k = n&1; //取整数的最后一位,判断奇偶性。
if(!k){ //偶函数
r = integerReplacement(n>>1)+1;//递归,左移一位,+1
}
else{//奇数
r = integerReplacement(n>>1)+2;//减1。末尾直接忽略
rr = integerReplacement((n+1)>>1)+2; //考虑 n=INT_MAX。 所以前面提出INT_MAX,防止+1溢出
r = min(r, rr);
}
return r;
}
};