Wiem, że zadałem pytanie na ten temat, ale żadna z odpowiedzi mi nie pomogła. Nie potrzebuję pomocy przy implementowaniu kodu, potrzebuję tylko pomocy w sortowaniu tego procesu rekurencyjnego.Znajdź drugą najmniejszą liczbę na liście używając rekursji
Początkowo myślałem, zwracając rekurencyjnie krotkę na każdym poziomie i porównując ją, znajdź drugą najmniejszą wartość. Ale to nie działa, ponieważ chcę, aby moja funkcja zwracała tylko 1 wartość na końcu - druga najmniejsza wartość.
Co powinienem zrobić z procesem rekursywnym dla tego problemu? Dziękuję Ci!
Edytuj: Przepraszam, że nie zawierają wystarczającej liczby informacji, więc tutaj jest.
funkcja powinna działać w następujący sposób:
>>> sm([1,3,2,1,3,2])
>>> 2
Druga edycja: Przepraszamy za opóźnienie, byłem zajęty aż do teraz, w końcu był w stanie usiąść i umieścić co miałem na myśli w kodzie. Działa zgodnie z przeznaczeniem, ale szczerze uważam, że jest to bardzo gówniany i nieefektywny sposób wykonywania rekursji, ponieważ prawdopodobnie możesz powiedzieć, że jestem nowy w tej koncepcji.
Aby ponownie sformułować moje oryginalne pytanie za pomocą poniższego pseudo kodu: Czy można zrobić to, co tutaj zrobiłem, ale bez owijania go w drugą funkcję? Czy możliwe jest posiadanie funkcji, która rekurencyjnie nazywa siebie samą i zwraca 1 numer - drugą najmniejszą liczbę?
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]
Czy numery są różne? Jeśli na liście jest [2,1,2,1,3,5], jaka jest druga najmniejsza liczba? –
Zapomniałem wspomnieć, że mogą być monotonne, więc na liście, którą podałeś, będzie 2. I minimalna długość listy będzie również 2. – gptt916
Wyświetlanie kodu psuedokodowego lub nawet rzeczywistego w połączeniu z akapitem drugim byłoby pomocne, więc wiemy, co masz. –