8 递归
231. 2的幂
给你一个整数n,请你判断该整数是否是2的幂次方。如果是,返回true;否则,返回false。如果存在一个整数x使得n == 2^x,则认为n是2的幂次方。
示例 1:
输入:n = 1
输出:true
解释:2^0 = 1
示例 2:
输入:n = 16
输出:true
解释:2^4 = 16
示例 3:
输入:n = 3
输出:false
算法设计
本题判断整数n是否是2的幂次方。众所周知,2的幂次方必然是正整数,因此如果n ≤0,肯定不是2的幂次方。那么对于一个正整数,如果判断是否为2的幂次方呢?
分析2的幂次方的特点:n=1,可以表示为n=2^0。n=16,可以表示为n=2×2×2×2=2 ^ 4。也就是说,对于正整数n,如果n=1或者n可以分解为若干个2的乘法,则n是2的幂次方。本题有3种方法解决:迭代法、递归算法和位运算法。