我知道有關於此主題的問題,但沒有任何答案對我有幫助。我不需要實現代碼的幫助,我只需要通過遞歸過程對此進行排序。使用遞歸在列表中找到第二小的數字
我原本以遞歸方式返回每個級別的元組並比較以找到第二小的值。但是這不起作用,因爲我希望我的函數只在最後返回1個值 - 第二小的值。
我該如何解決這個問題的遞歸過程?謝謝!
編輯:對不起,沒有足夠的細節,所以這裏。
功能應該工作如下:
>>> 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]
數字是否有區別?如果列表是[2,1,2,1,3,5],那麼第二小的數字是多少? –
忘了提及,它們可以是重複的,所以在你給它的列表中是2,列表的最小長度也是2。 – gptt916
顯示psuedocode或甚至與第二段一起的實際代碼會有所幫助,所以我們知道你有什麼。 –