我如何递归地计算链接列表中某个范围内的数字总和?

时间:2015-03-30 01:14:57

标签: python-2.7 recursion linked-list

假设我需要递归计算链表中所有值的总和,但我必须为任何大于或等于50的数字加0。

我在我的基础案例中遇到了一个问题,我不确定如何正确计算总和。它总是在它达到大于50的数字时停止迭代。就像这样:

def sumNodes(linkedList):
    ptr = linkedList
    if ptr['data'] >= 50:
        return 0
    return ptr['data'] + sumNodes(ptr['next'])


y = {'data': 2, 'next': {'data': 3, 'next': {'data': 4, 'next': {'data': 100, 'next': {'data': 45, 'next': {'data': 200, 'next': {'data': 6, 'next': None}}}}}}}

sumNodes(y)

这返回值9,我不知道如何在这些类型的情况下继续遍历链表。我确定有一种方法可以在返回0时继续迭代。我已经尝试在if语句中进行递归调用,但它返回错误。我被困在这里。

1 个答案:

答案 0 :(得分:1)

只需将当前值存储在临时变量中,并在需要时将其设置为零:

def sumNodes(linkedList):
    ptr = linkedList
    tmp = ptr['data']
    if tmp >= 50:
        tmp = 0

    return tmp + sumNodes(ptr['next'])

从未使用过python,所以可能是拼写错误,但这个想法应该会有所帮助。

根据@ carcigenicate上面的评论,您还需要满足零长度列表并返回零。