Вы можете использовать флаг в качестве необязательного параметра, чтобы указать, находится ли вызов на верхнем уровне, и если и только если так, он вернет '0'
;в противном случае возвращается пустая строка:
def binary(n, top_level=True):
if n > 0:
return binary(n // 2, False) + str(n % 2)
elif top_level:
return '0'
else:
return ''
, поэтому:
binary(11)
возвращает: '1011'