自己办网站,红豆网梧州论坛,手机管理网站,合肥房价查询网题意#xff1a;
给你一个整数 n#xff0c;请你判断该整数是否是 2 的幂次方。如果是#xff0c;返回 true #xff1b;否则#xff0c;返回 false 。
如果存在一个整数 x 使得 n 2x #xff0c;则认为 n 是 2 的幂次方。
示例 1#xff1a;
输入#xff1a;n 1…题意
给你一个整数 n请你判断该整数是否是 2 的幂次方。如果是返回 true 否则返回 false 。
如果存在一个整数 x 使得 n 2x 则认为 n 是 2 的幂次方。
示例 1
输入n 1 输出true 解释20 1
示例 2
输入n 16 输出true 解释24 16
示例 3
输入n 3 输出false
示例 4
输入n 4 输出true
示例 5
输入n 5 输出false
提示
-2^31 n 2^31 - 1
**进阶**你能够不使用循环/递归解决此问题吗
题目来源 https://leetcode.cn/problems/power-of-two/description/
解题方法
方法一循环 /*** param Integer $n* return Boolean*/// 循环function isPowerOfTwo($n) {$x 0;$s 1;while($n $s){if($n $s){return true;}$x;$s pow(2,$x);}return false; }方法二递归 //递归function isPowerOfTwo($n) {if($n 1) {return true;}if($n % 2 ! 0 || $n 0){return false;}return $this-isPowerOfTwo($n / 2);}方法三进阶位运算 //位运算//2 的幂转化为二进制首位为 1其他都为 0. n (n - 1) 0//注意运算符的优先级用括号处理function isPowerOfTwo($n) {return $n 0 (($n ($n - 1)) 0);}