这是一道家庭作业题。我试图得到一个递归函数:
def problem_a(n):
answer.append(n)
if n == 1:
return answer
elif n % 2 == 0:
answer.append(n/2)
else :
answer.append(n*3 + 1)
problem_a(n*3 + 1)
这段代码显然不起作用,因为answer
没有定义为列表。对于循环它可以工作,但是我想做一个递归函数。我可以用一个列表作为输入,但我想知道是否还有更优雅的东西。你知道吗
{}输出为[7, 22, 11, 34, 17, 52, 26, 13, 40 , 20, 10 ,5 ,16, 8, 4, 2, 1]
到目前为止所建议的解决方案(使用额外的参数将列表传递到递归链上)的另一种解决方案是在从递归返回时构建最终列表。这不是非常有效,因为串联列表需要同时复制这两个列表,但它可以工作:
你可以试试发电机:
您可以定义一个局部变量
answer
,并在递归调用中传递它。你知道吗输出:
相关问题 更多 >
编程相关推荐