Я знаю, что на этот вопрос был задан вопрос, но ни один из ответов не помог мне. Мне не нужна помощь в реализации кода, мне просто нужна помощь в сортировке через рекурсивный процесс для этого.
Я изначально думал, что рекурсивно возвращать кортеж каждого уровня и сравнивать, чтобы найти второе наименьшее значение. Но это не работает, так как я хочу, чтобы моя функция возвращала только одно значение в конце - второе наименьшее значение.
Как мне решить рекурсивный процесс для этой проблемы? Спасибо!
Изменить: Извините, что вы не указали достаточно подробностей, поэтому здесь идет.
Функция должна работать следующим образом:
>>> sm([1,3,2,1,3,2])
>>> 2
Второе редактирование: Извините за задержку, я был занят до сих пор, наконец, смог сесть и поставить то, что я имел в виду, в код. Он работает по назначению, но я честно считаю, что это очень дерьмовый и неэффективный способ сделать рекурсию, так как вы, вероятно, можете сказать, что я новичок в этой концепции.
Чтобы перефразировать мой оригинальный вопрос, используя псевдо-код ниже: возможно ли сделать то, что я здесь сделал, но не обертывая его второй функцией? То есть, возможно ли иметь функцию, которая только рекурсивно вызывает свое "я", и возвращает 1 номер - второе наименьшее число?
def second_smallest(list):
def sm(list):
if base case(len of list == 2):
return ordered list [2nd smallest, smallest]
else:
*recursive call here*
compare list[0] with returned ordered list
eg: [3, [5,2]]
re-arrange, and return a new ordered list
[3,2]
return sm(list)[0]