如何使用递归对数组的偶数和奇数求和

时间:2013-11-14 21:54:50

标签: python recursion

我需要帮助创建一个递归函数,它接受一个数组列表/数组并返回一个元组或类似格式(a,b),其中a是偶数之和,b是奇怪的...... 例如:

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

return: (6, 9)

1 个答案:

答案 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)