我需要帮助创建一个递归函数,它接受一个数组列表/数组并返回一个元组或类似格式(a,b)
,其中a
是偶数之和,b
是奇怪的......
例如:
input: [1, 2, 3, 4, 5]
return: (6, 9)
答案 0 :(得分: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)
,并且从那一点开始,每个连续的递归调用根据列表中的当前值(如果它是偶数或奇数)递增元组中的正确值。它按预期工作:
sum_even_odd([1, 2, 3, 4, 5])
=> (6, 9)