递归函数生成指定嵌套列表的实现问题
解决方案
你的代码当前返回的是嵌套的单元素列表,和需求的结构不符。观察你给出的输入3的结果,可以发现规律:func(n) 是包含 func(0) 到 func(n-1) 的列表,递归关系为 func(n) = func(n-1) + [func(n-1)](因为 func(n-1) 已经包含了前n-1个结果,加上自身就得到前n个结果)。
修正后的递归函数如下:
def func(n): if n == 0: return [] prev = func(n-1) return prev + [prev]
测试结果:
func(0)→[]func(1)→[[]]func(2)→[[], [[]]]func(3)→[ [], [ [] ], [ [], [ [] ] ] ]
你提到输入1返回[[], [[]]],这应该是输入2的结果,可能是描述时的笔误。如果坚持输入1要返回该结果,那么需求的递归关系会导致无限嵌套(因为func(1)需要包含自身),无法实现有限长度的列表。
内容的提问来源于stack exchange,提问作者Dr.jj
相关产品推荐
相关产品推荐

