我将如何在一定范围内递归地计算链表中数字的总和?
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 上面的评论。
假设我需要递归计算链表中所有值的总和,但我必须为大于或等于 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 上面的评论。