Рекурсивный поиск с возвратом без возвращаемого значения python

Полная проблема находится на https://www.hackerrank.com/challenges/password-cracker/ Я хотел бы знать, что не так с моей реализацией рекурсивного поиска с возвратом

Проблема: задан массив паролей, вернуть неправильный пароль, если слово не является комбинацией этих паролей.

Я хотел бы спросить, как я могу вернуть значение из этого; Я могу распечатать решение, но не вернуть его в виде строки. Я не уверен, что я могу сделать отсюда; Я пытался вернуть значение, когда слово == '', но это не сработало

def crackhelper(passwords,word,sol):
    #Check if theres some password that currently works
    print(sol)
    for password in passwords:
        if word[:len(password)]==password:
            sol+=password
            crackhelper(passwords,word[len(password):],sol)
            sol=sol[:-len(password)]

    return ''
def crack():
    word="wedowhatwemustbecausewecane"
    passwords="because can do must we what cane".split(' ')
    j=crackhelper(passwords,word,'')    
    print(j)
    #print(passwords)

person quantnb2021    schedule 16.08.2020    source источник
comment
вы можете использовать yield вместо return.   -  person Will Ness    schedule 16.08.2020
comment
Благодарю вас! Не могли бы вы объяснить преимущество доходности над доходностью?   -  person quantnb2021    schedule 16.08.2020
comment
stackoverflow.com/search?q=%5Bpython%5D+yield   -  person Will Ness    schedule 17.08.2020


Ответы (1)


def crack_helper(passwords, word, sol):
    # Check if there is some password that currently works.
    if word ==  "":
        return sol
    for password in passwords:
        if word[:len(password)] == password:
            sol += password
            s = crack_helper(passwords, word[len(password):], sol)
            if s != "No Result":
                sol = s
                return sol
            sol = sol[:-len(password)]
    return "No Result"

Это должно сделать эту работу :)

person juva    schedule 16.08.2020