使用递归的List的总和

时间:2014-05-01 20:47:24

标签: python recursion input

我不明白为什么在以下代码中未定义“head”,我正在尝试使用Accumulate模式来获取一些数字列表。

def sum(items):
    if (items == None): #base case
        return 0
    else:
        return head(items) + sum(tail(items))
def main():
    items = (input("give me a list"))
    print ("the sum of the list is", sum(items))

main()

2 个答案:

答案 0 :(得分:1)

由于headtail是通过向它们传递参数来调用的(items是两者的参数),所以你应该将它们声明为函数:

def head(items):
    # ...
    return ...

def tail(items):
    # ...
    return ...

注意:

  • 如果这是一个家庭作业,那么问题陈述应该指明那些应该做的功能。

答案 1 :(得分:0)

def sum(items):
    if not items:
        return 0
    else:
        head = lambda x: x[0]
        tail = lambda x: x[1:]
        return head(items) + sum(tail(items))