Power of Two
Given an integer, write a function to determine if it is a power of two.
https://leetcode.com/problems/power-of-two/
二分。
2的整数次幂,要么开方后是整数(这个数也是2的整数次幂),要么除以2之后再开方后是整数。继续递归判断开方后的结果直到碰到1或者2。
比如1024(2^10),是由两个32(2^5)相乘;2048(2^11),是由两个32(2^5)相乘,再乘以2。
1 /** 2 * @param {number} n 3 * @return {boolean} 4 */ 5 var isPowerOfTwo = function(n) { 6 if(n < 1){ 7 return false; 8 }else if(n === 2 || n === 1){ 9 return true; 10 }else{ 11 var sqrt = Math.sqrt(n); 12 if(sqrt === parseInt(sqrt)){ 13 return isPowerOfTwo(sqrt); 14 }else{ 15 n = n / 2; 16 sqrt = Math.sqrt(n); 17 if(sqrt === parseInt(sqrt)){ 18 return isPowerOfTwo(sqrt); 19 }else{ 20 return false; 21 } 22 } 23 } 24 };
时间: 2024-10-15 22:26:11