假设我需要递归计算链表中所有值的总和,但我必须为任何大于或等于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语句中进行递归调用,但它返回错误。我被困在这里。
答案 0 :(得分:1)
只需将当前值存储在临时变量中,并在需要时将其设置为零:
def sumNodes(linkedList):
ptr = linkedList
tmp = ptr['data']
if tmp >= 50:
tmp = 0
return tmp + sumNodes(ptr['next'])
从未使用过python,所以可能是拼写错误,但这个想法应该会有所帮助。
根据@ carcigenicate上面的评论,您还需要满足零长度列表并返回零。