Почему эта рекурсия на Python не работает?
Подразумевалось, что она должна переводить десятичное число в двоичную систему счисления. И я знаю, что можно без рекурсии это сделать. Просто не могу понять, почему этот код не работает.
s=""
def Lo(a,s):
if a>0:
s=str(a%2)+s
Lo(a//2,s)
else:
return s
a=int(input())
print(Lo(a,s))
Ответы (2 шт):
Автор решения: Ret7020
→ Ссылка
Тут всё просто, вы некорректно написали вызов самой функции внутри, вы её должны не просто вызывать, но и ретёрнить. Т.е. нужно пофиксить только одну строку. И ещё, пишите с применением стандарта форматирование pep8.
s = ""
def Lo(a, s):
if a > 0:
s = str(a % 2) + s
return Lo(a // 2, s)
else:
return s
a = int(input())
print(Lo(a, s))
Автор решения: SergFSM
→ Ссылка
то же самое вы можете записать немного компактнее:
def d_to_b(n):
return str(n) if n<2 else d_to_b(n//2) + str(n%2)