我需要更改当前函数empty_buckets(n),该函数创建一个列表(存储桶),其中包含“ n”个列表。
我设法使函数减少到基本情况,但无法使它在每次递归时追加一个列表
原始功能
java.nio.charset.Charset
新功能
def empty_buckets(n)
buckets = []
for bucket in range(n):
buckets.append([])
print(buckets)
return buckets
结果应为等于n的列表列表。也就是说,如果n为4,则结果将为[[],[],[],[]]
答案 0 :(得分:0)
您可以像这样重新编写您的递归-
def empty_buckets(n, buckets):
if n == 0:
return buckets # base case - just return the buckets.
else:
buckets.append([]); # append a new empty list to the buckets
return empty_buckets(n-1, buckets) # call recursion along with appended bucket list
print(empty_buckets(4, []))
编辑
如果您不想将buckets
传递给method参数,则可以执行此操作-
def empty_buckets(n):
if n == 0:
return [];
else:
buckets = empty_buckets(n-1); # call the recursion
buckets.append([]) # append an empty list
return buckets
答案 1 :(得分:0)
每个函数都有它自己的变量副本(在我们的例子中是bucket)。因此,每次调用该方法时,它都会将存储桶重新初始化为一个空列表,并且永远不会填充它。因此,或者您必须将列表作为参数传递给方法,以便它可以修改并提供给您,或者您必须将其分成两个这样的方法:
def g(buckets):
buckets.append([])
return buckets
def empty(n):
if n == 0:
return []
return g(empty(n - 1))