Условие задачи
Given an integer, write a function to determine if it is a power of two.
Дано целое число, необходимо написать функцию, которая проверяет – является ли число степенью двойки.
пример 1
1
2
3
|
Input: 1
Output: true
Explanation: 2^0 = 1
|
пример 2
1
2
3
|
Input: 16
Output: true
Explanation: 2^4 = 16
|
пример 3
1
2
|
Input: 218
Output: false
|
Решение
Рекурсивная проверка
1
2
3
4
5
6
7
8
9
10
11
12
13
|
func isPowerOfTwo(n int) bool {
if n<=0 {
return false
}
if n == 1 {
return true
}
if n%2 == 1{
return false
}
return isPowerOfTwo(n>>1)
}
|
Цикл
1
2
3
4
5
6
7
8
9
10
11
12
|
func isPowerOfTwo(n int) bool {
if n<=0 {
return false
}
for ;n >1;n=n>>1 {
if n%2 == 1 {
return false
}
}
return true
}
|