Рекурсивное определение – это тот, который использует слово или концепцию, определенную в самом определении
Прежде чем применять рекурсию к программированию, лучше всего практиковать мышление рекурсивно
Здесь я собираюсь показать вам хороший пример для разъяснения цели в подробном.
Проблема заключается в нахождении номера дополнения двоичного формата.
** ПРИМЕР 1:
Вход: Вывод: 2 Объяснение: Двоичное представление 5 составляет 101 (без ведущих нулевых битов), а его дополнение составляет 010. Таким образом, вам нужно выводить 2.
** ПРИМЕР 2:
Вход: Вывод: 0 Объяснение: Двоичное представление 1 равно 1 (без ведущих нулевых битов), а его дополнение 0. Так что вам нужно выводить 0.
** Ограничения:
The given integer num is guaranteed to fit within the range of a 32-bit signed integer. num >= 1 You could assume no leading zero bit in the integer's binary representation.
class Solution: def findComplement(self, num: int) -> int: binary_num = bin(num)[2:] # >>> '101' new_binary_num = binary_num.replace('0','1') #>>>'111' int_num = int(new_binary_num, 2) #>>>7 difference = int_num - num # >>>7-5 = 2 return difference
У прошащегося вы находитесь перед двумя вариантами, эффективность (время выполнения) и управление памятью Здесь мы выбрали память, однако, время выполнения не будет так плохо! В худшем случае это было бы о (n).
Объясняя код Python: 1 – Форматирование целочисленного входа в правильный двоичный двоичный для обработки нарезания его [2:], чтобы избежать префикса 0B Как вывод Bin (5)
2 – Чтобы получить дополнение, мы можем получить максимальное значение из двоичной последовательности, заменяя каждый «0» с «1»
3 Поверните его в целочисленный формат еще раз, используя дополнительную базу аргументов Int () = …
int ('101',
Или мы можем сделать это int ('0b101', 2)
4- Получите разницу, которая будет представлять дополнение двоичной последовательности
Дополнительный ресурс для просмотра идеи с другой точки зрения Для читателей Curios
Оригинал: “https://dev.to/yusufadel/recursive-thinking-approach-python-3e53”