计算一个数是2的几次幂

给定一个数n,快速计算n是2的几次幂

计算一个数是2的几次幂_第1张图片

#include 
#include 

using namespace std;

/**
 *  非递归 -- 判断一个数是2的几次幂
 *  @param n	给定的数 
 */
int log(int n)
{
	int count = 0;
	if(n == 1)
		return 0;
		
	while(n > 1)
	{
		n = n>>1;	//右移 -> 除以2的1次方 
		count++;
	}
	return count; 
}

/**
 *  递归 -- 判断一个数是2的几次幂
 *  @param n	给定的数 
 */
int log2(int n)
{
	int count = 0;
	if(n == 1)
		return 0;
		
	return 1 + log2(n>>1); 
}

int main()
{	
	int n, k;
	cout<<"给定一个数:";
	cin>>n;
	k = log2(n);
	if(n != pow(2, k))
		cout<<n<<"不是2的幂次方数"<<endl;
	else
		cout<<n<<"是2的"<<k<<"次幂"<<endl;
	return 0;
}

你可能感兴趣的:(C/C++,c++,算法,leetcode)