我在尝试递归地将数字序列添加到列表中时遇到了一个错误。例如,如果输入是[5,3,9],我会执行[5+1,3+2,9+3]并输出[6,5,12]。我希望能够递归地实现这个过程,因此我的做法是通过遍历列表中越来越小的一部分并将其加一来完成:
def add_position_recur(lst, number_from=0):
length = len(lst)
# base case
if (length <= 1):
lst = [x+1 for x in lst]
print "last is", lst
else:
lst = [x+1 for x in lst]
print "current list is", lst
add_position_recur(lst[1:], number_from)
return lst
问题在于,这只是将列表中的每个元素加1。错误在哪里?是与我在基本情况下返回列表的方式有关吗?
number_from
用于什么?在你的代码中它没有任何用处。请注意,当你执行lst = ...
时,你正在改变lst
引用的新列表。这不会改变作为参数传递的原始列表。 - logee