Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用递归查找列表中的偶数之和? def sum_evens_2d(xss): i=0 计数器=0 而(i_Python_Recursion_Sum - Fatal编程技术网

Python 如何使用递归查找列表中的偶数之和? def sum_evens_2d(xss): i=0 计数器=0 而(i

Python 如何使用递归查找列表中的偶数之和? def sum_evens_2d(xss): i=0 计数器=0 而(i,python,recursion,sum,Python,Recursion,Sum,我试图在列表xss中找到even的总和。我的限制是,我不能使用sum(),只能使用递归。提供的代码工作正常。 因此,尝试使用sum,如下所述: def sum_evens_2d(xss): i = 0 counter = 0 while (i < len(xss)): if(xss[i]%2 == 0): counter += xss[i] i= i+1 else:

我试图在列表
xss
中找到even的总和。我的限制是,我不能使用
sum()
,只能使用递归。

提供的代码工作正常。 因此,尝试使用
sum
,如下所述:

def sum_evens_2d(xss):
    i = 0
    counter = 0
    while (i < len(xss)):
        if(xss[i]%2 == 0):
            counter += xss[i]   
            i= i+1
        else:
            i = i+1
    return(counter)

如果不能使用
sum
并且必须使用递归,则可以执行以下操作:

xss = range(5)
print sum(el for el in xss if el % 2 == 0)

刚刚测试过这个,应该可以:

def s(xss):
    if not xss:
        return 0 # for when the list is empty
    counter = 0 if xss[0] % 2 != 0 else xss[0]
    return counter + s(xss[1:])

您说您不能使用
sum()
,因为您遇到了一个错误。因此,有一种正确的方法可以使用
sum()
。不,我不能使用它,因为教授限制我不能使用它。
偶数sum(范围(10000))
def even_sum(a):
    if not a:
        return 0
    n = 0
    if a[n] % 2 == 0:
        return even_sum(a[1:]) + a[n]
    else:
        return even_sum(a[1:])

# will output 154
print even_sum([1, 2, 3, 4, 5, 6, 7, 8, 23, 55, 45, 66, 68])