我将如何在一定范围内递归地计算链表中数字的总和?

How would I go about calculating the sum of numbers in a linked list, in a certain range, recursively?

假设我需要递归计算链表中所有值的总和,但我必须为大于或等于 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)

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

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

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

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

从未使用过 python 所以可能有错别字,但希望这个想法对您有所帮助。

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