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

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



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

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



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

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



Примеры

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

1024

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

YES

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

1234

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

NO



(повторяю, программа должна быть рекурсивной)
 
А это из какого курса?
Что-то мне кажется, что пример высосан из пальца.
 
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")
 
Для этой задачи БЕССМЫСЛЕННО использовать рекурсию, т.к. она решается элементарным выражением. n = int(input())
print(['NO', 'YES'][n & (n - 1) == 0]) Если бы для решения задачи нужен был цикл, её можно было бы записать рекурсивно. Но здесь цикла даже близко нет.
 
Назад
Сверху