Mad*_*Bit 6 python recursion list
我需要编写一个接收非负整数并返回的函数:
[] for n=0
[[]] for n=1
[[],[[]]] for n=2
[[],[[]],[[],[[]]]] for n=3
Run Code Online (Sandbox Code Playgroud)
等等。对于n
,我们将收到一个n
调整大小的列表,因此索引中将i
包含i-1
列表中的所有元素。我不知道如何更好地解释这一点,英语不是我的母语。
我不允许使用列表切片或循环,并且我应该在没有copy
模块的情况下创建每个列表的深层副本。我不允许让两个不同的列表或索引指向内存中的同一个列表。
这是我尝试过的:
def list_seq(x, outer_list=[]):
if x == 0:
return []
outer_list.append(list_seq(x-1,outer_list))
return outer_list
Run Code Online (Sandbox Code Playgroud)
的输出print(list_seq(2))
是[[], [...]]
.
如果不能使用循环,可以使用以下方法:
def recursive_list(n):
if n == 0:
return []
else:
return recursive_list(n-1) + [recursive_list(n-1)]
Run Code Online (Sandbox Code Playgroud)
如果您想使用,可以执行以下操作append
:
def recursive_list(n: int) -> list:
if n:
result = recursive_list(n-1)
result.append(recursive_list(n-1))
return result
return []
Run Code Online (Sandbox Code Playgroud)
注意,正如评论中指出的,caching
引入了一些参考问题,因此我删除了缓存版本。