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引入了一些参考问题,因此我删除了缓存版本。
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |