一、题目
判断一个整数n是否是2的幂次,是返回True,否返回False
二、分析
1. 递归法:如果n是0,返回False,如果n是1,返回True,其他情况,将n//2递归
2. 数学法:还是从数学上解决这个问题,观察2的幂的整数的规律,在2进制中规律明显,即只存在一个1。利用这一点添加判别条件找出这种类型的,判别条件:n&(n-1)==0,n和n-1进行按位与运算,会将最低位的1去掉。
三、题解
1. 递归法
class Solution:def isPowerOfTwo(self, n: int) -> bool:if n == 1 or n == 2:return Trueelif n == 0:return Falseelif n%2 != 0:return False
2. 数学法
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
return n > 0 and n&(n-1) == 0