Путаница с рекурсивной функцией для десятичного в двоичный код? - PullRequest
0 голосов
/ 04 декабря 2018
decimal = int(input("Enter the Decimal value :"))

def d_b(decimal,binary):
    # function to convert decimal to binary
    binary = binary + str(decimal % 2)
    if decimal > 1:
        d_b(decimal//2,binary)
    else :
        print (binary)
        return (binary)

print ("Decimal to Binary : ", d_b(decimal,binary = ''))

Выход для ввода 34:

010001

Десятичное число в двоичное: нет

Функция печатает ответ, но не возвращает его и затем начинает идтивозвращается к функции и начинает удалять символы один за другим из строки и, наконец, не возвращает ни одного вместо двоичной строки.

Правильный код:

decimal = int(input("Enter the Decimal value :"))

def d_b(decimal,binary):
    # function to convert decimal to binary
    if decimal > 0:
        binary = d_b(int(decimal)//2,binary)
        binary = binary + str(decimal % 2)
    return (binary)

print ("Decimal to Binary :",d_b(decimal,binary = ''))

1 Ответ

0 голосов
/ 04 декабря 2018

Попробуйте, добро пожаловать:

def d_b(decimal,binary):
    # function to convert decimal to binary
    binary = binary + str(decimal % 2)
    if decimal > 1:
        binary = d_b(int(decimal/2), binary) # <-- this is the line you should change
    return binary

Или еще короче с троичным оператором:

return decimal > 1 ? d_b(int(decimal/2), binary): binary
...