def dec2binr(n):
if n == 1:
return '1'
else: return (str(n%2)+dec2binr(n//2))[::-1]
Без [:: - 1] он возвращает обратное двоичное число. [:: - 1] не работает в этом случае - при п = 40 Ii прибудете:Ошибка простого рекурсивного двоичного преобразователя
011000
, когда я бы ожидать
101000
Без [:: - 1] я получаю
000101
Какая обратная, но правильная. Почему это происходит и как я могу это исправить?
Вам также нужен базовый футляр для '0'. – jpm
@jpm: no, '0% 2 == 0' –
@MartijnPieters Это правда, но когда' 0' передается, мы возвращаем 'str (n% 2)', конкатенированный с результатом вызова рекурсивной функции (снова , с аргументом '0') – jpm