当m是偶数时,除以2;
当m=3时,-1
当m!=3&&(m+1)%4==0时,+1
否则,-1
#include<iostream> using namespace std; int funx(int n) { int m=n; int count=0; while(m!=1) { if(m%2==0) { m=m/2; } else if(m==3)m=m-1; else if((m+1)%4==0) { m=m+1; } else { m=m-1; } count++; } return count; } int main() { int n; while(cin>>n) cout<<funx(n)<<endl; system("pause"); return 0; }
或者代码如下:参考博客
// 非递归写法 int func(int n) { int count = 0; while(n > 1) { if(n % 2 == 0) // n % 4等于0或2 n >>= 1; else if(n == 3) n--; else n += (n % 4 - 2); // n % 4等于1或3 count++; } return count; }
时间: 2024-10-08 11:08:11