2017-05-20 22 views
-4

說我有一個函數max_multiples(list,m) 該列表是一個非空列表,如何返回列表中的最大數字列表是m的倍數?計算並返回列表中多個(m)的最大值 - 遞歸

使用遞歸函數

+5

什麼你嘗試這麼遠嗎? –

+1

如果你知道如何檢查一個數字是否是其他數字的倍數,那麼你已經到了一半了。然後,如果你知道如何在數字列表中找到最大值,那麼你就是2/3。最後,一旦你能夠遞歸地完成後者,就完成了。 – ForceBru

+0

看@傑羅姆給我的答案。我做了類似的事情,但得到錯誤,因爲我無法使用循環 –

回答

1

我想這是某種形式的運動,並@ ForceBru的評論導致你以正確的方式。

爲了記錄,這不是遞歸的,但這是我如何在現實生活中做到這一點。

def max_multiples(input_list, m): 
    multiples = [n for n in input_list if not n % m] 
    if multiples: 
     return max(multiples) 
    else: 
     return None 

max_multiples([5, 9, 16, 8, 6], 3) 
# 9 

max_multiples([5, 9, 16, 8, 6], 45) 
# None 

通過Python 3.4,它可以這樣寫:

def max_multiples(input_list, m): 
    max([n for n in input_list if not n % m], default=None) 
+0

嘿我真的嘗試了類似的東西,但我不能使用任何循環或我得到一個錯誤 –

+0

然後這是一件好事,沒有任何代碼有任何循環。你想表達什麼意思?什麼是錯誤的完整回溯? –

+0

哦,我只是認爲這是for循環或什麼的。這是一個學校的計劃,它只是說「隱藏的測試失敗」 –