【发布时间】:2015-12-07 11:48:13
【问题描述】:
我在尝试以递归方式将数字序列添加到列表时遇到了错误。例如。如果输入是 [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以引用新列表。它不会改变作为参数传入的原始列表
标签: python list recursion return tail-recursion