2013-11-14 41 views
3

我需要幫助創建一個遞歸函數,它需要一個數組的列表/數組並返回一個元組或類似的格式(a,b)其中a是偶數的總和和b是總和奇怪的... 例如:如何使用遞歸求和一個數組的偶數和奇數

input: [1, 2, 3, 4, 5] 

return: (6, 9) 
+0

用什麼語言? –

+0

最好是python,但任何語言都可以:-) – Joneleth

回答

6

在Python中,你可以試試這個:

def sum_even_odd(lst): 
    if not lst:      # empty list, we're done 
     return (0, 0)    # counters are zero for empty list 
    elif lst[0] % 2 == 0:   # current value is even 
     x, y = sum_even_odd(lst[1:]) # recursive call 
     return (lst[0] + x, y)  # increment even counter 
    else:       # current value is odd 
     x, y = sum_even_odd(lst[1:]) # recursive call 
     return (x, lst[0] + y)  # increment odd counter 

注意的基本情況如何返回(0, 0),並從該點上,每個successiv遞歸調用根據列表中的當前值增加元組中的正確值,如果它是偶數或奇數。它按預期工作:

sum_even_odd([1, 2, 3, 4, 5]) 
=> (6, 9) 
+1

Oscar ty vm這讓我瘋狂:-) – Joneleth