递归函数中的列表总和

时间:2014-10-14 21:16:23

标签: python list recursion

我试图在python 3中创建一个函数来计算0和1的列表中的1的数量,但它需要递归而不使用和函数。有人可以解释为什么这个功能不起作用吗?

def count_ones(s):
    if len(s) == 0:        
        return 0    
    elif s[0] == 1:       
        return 1 + count_ones(s[1:])   
    elif s[0] == 0:
        return 0 + count_ones(s[1:])

当我插入count_ones([1, 0, 0, 1, 1])时,我得到了

TypeError: unsupported operand type(s) for +: 'int' and 'list'

1 个答案:

答案 0 :(得分:0)

您的基本案例需要处理单个元素。因此,如果您只有一个元素,请将其转换为int并返回该值。

def count_ones(l):
    if len(l) == 1:
        return int(l[0])     # Return int value 1 or 0
    else:
        return int(l[0]) + count_ones(l[1:])

测试

>>> count_ones([1,0,0,1,1])
3