2016-08-19 63 views
0

我正在使用Snap!嘗試查找列表中最早的項目。例如,在列表[3,1,2]中,我想報告「1」。我希望解決方案也適用於單詞(例如,給定列表[Bob,George,Ari]報告「Ari」)。投訴列表中的最早項目

我試圖用遞歸來解決問題

enter image description here

和解決方案的工作。但是,我找不到第二個「if else」語句的遞歸方式。有沒有辦法使用遞歸來解決這個問題,而沒有「if 0 = length of ...」語句?

玩它here

回答

0

我沒有看到一種方法來做到這一點,沒有兩個if...else陳述。您需要兩張支票:

  1. 列表是否已用盡?
  2. 是否第一個元素少於以下所有元素?

在某些語言中,可以使用條件三元運算符?:,但我不認爲是Snap!支持。無論如何,它實際上只是一個if...else的語法糖。


不過,您可以對此功能進行一些清理。

  1. 我建議明確處理零長度列表的情況。
  2. 「最早」令人困惑。我建議使用「最少」一詞,因爲您正在使用「少於」運算符進行檢查。
  3. 請勿多次撥打keep items such that [] from []。如果有人修改了一行,但忘記修改另一行,這是效率低下和潛在的錯誤。相反,將結果保存在腳本變量中。
  4. 不要將當前第一個元素與列表中的每個元素進行比較。這給了函數一個O(n^2)運行時間。相反,只能將其與目前的最小元素進行比較。這將運行時間減少到O(n)。

這些變化都在這裏實現的:

enter image description here