Как вы находите первую строку из списка строк, используя рекурсию? - PullRequest
0 голосов
/ 14 апреля 2020

Мне нужно создать функцию, которая рекурсивно возвращает первую строку списка строк (найдено из Python сравнительных тестов, например, 'agf' <'bcd'). </p>

class Node:
    def __init__(self, value, rest):
        self.value = value
        self.rest = rest
    def __eq__(self, other):
        return ((type(other) == Node)
          and self.value == other.value
          and self.rest == other.rest
        )
    def __repr__(self):
        return ("Node({!r}, {!r})".format(self.value, self.rest))

# a StrList is one of None or Node(string, StrList)

def first_string(strlist):
    if strlist is None:
       return None
    res = first_string(strlist.rest)
    if strlist.value != res:
       return res

Всякий раз, когда я тестирую функцию, основная ошибка, которую я имею, состоит в том, что я возвращаю None только при прохождении узла.

Пример функции:

strlist = Node("xyz", Node("Abc", Node("49ers", None)))
self.assertEqual(first_string(strlist),"49ers")

Вывод:

None

Я ценю, если кто-то может мне помочь.

1 Ответ

0 голосов
/ 14 апреля 2020
def first_string(strlist):
    if strlist is None:
       return None
    min_rest = first_string(strlist.rest)
    if min_rest is None or strlist.value < min_rest:
       return strlist.value
    return min_rest   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...