Помогите с написанием программы - Компьютерные вопросы

Вопрос Помогите с написанием программы

Регистрация
22 Ноя 2012
Сообщения
70
Репутация
1
Спасибо
0
Монет
0
Напишите рекурсивную программу, которая определяет, является ли переданное ей натуральное число целой степенью числа 2.



Входные данные

Входная строка содержит натуральное число.



Выходные данные

Программа должна вывести слово 'YES', если переданное ей число является целой степенью числа 2 и слово 'NO' в противном случае.



Примеры

входные данные

1024

выходные данные

YES

входные данные

1234

выходные данные

NO



(повторяю, программа должна быть рекурсивной)
 
Регистрация
30 Авг 2013
Сообщения
80
Репутация
0
Спасибо
0
Монет
0
А это из какого курса?
Что-то мне кажется, что пример высосан из пальца.
 
Регистрация
19 Сен 2013
Сообщения
101
Репутация
0
Спасибо
0
Монет
0
def is_power_of_two(n):
# Базовый случай: если число равно 1, оно является целой степенью 2
if n == 1:
return True
# Базовый случай: если число меньше 1 или нечетное, оно не является целой степенью 2
elif n < 1 or n % 2 != 0:
return False
# Рекурсивный случай: проверяем, является ли n / 2 целой степенью 2
else:
return is_power_of_two(n // 2)

# Запрос ввода числа от пользователя
number = int(input("Введите число: "))

# Проверка и вывод результата
if is_power_of_two(number):
print("YES")
else:
print("NO")
 
Регистрация
25 Янв 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
Для этой задачи БЕССМЫСЛЕННО использовать рекурсию, т.к. она решается элементарным выражением. n = int(input())
print(['NO', 'YES'][n & (n - 1) == 0]) Если бы для решения задачи нужен был цикл, её можно было бы записать рекурсивно. Но здесь цикла даже близко нет.
 
Сверху Снизу