这里是我想要做的事情。
拿出这个列表:
现在,如果我们要递归地再次拆分列表(取中点的中点),则列表将变为:
我需要一个能够生成类似下面这样的列表的函数,最好是通过跟踪变量来实现。例如,假设有一个变量n来跟踪某些内容,当n=1时,列表可能是[0,1,2],当n=2时,列表可能是[0,.5,1,1.5,2],我将增加该值以跟踪我已经分割了多少次列表。
我知道你需要使用递归来实现,但我不确定如何实现。
应该像这样:
list1 = [0,2]
这个列表有起始点0和结束点2。 现在,如果我们取这个列表的中点,这个列表会变成:
list1 = [0,1,2]
现在,如果我们要递归地再次拆分列表(取中点的中点),则列表将变为:
list1 = [0,.5,1,1.5,2]
我需要一个能够生成类似下面这样的列表的函数,最好是通过跟踪变量来实现。例如,假设有一个变量n来跟踪某些内容,当n=1时,列表可能是[0,1,2],当n=2时,列表可能是[0,.5,1,1.5,2],我将增加该值以跟踪我已经分割了多少次列表。
我知道你需要使用递归来实现,但我不确定如何实现。
应该像这样:
def recursive(list1,a,b,n):
"""list 1 is a list of values, a and b are the start
and end points of the list, and n is an int representing
how many times the list needs to be divided"""
int mid = len(list1)//2
stuff
能有人帮我写这个函数吗?这不是作业,而是我正在处理的一个项目的一部分,涉及使用网格分析将矩形分割成零件。
到目前为止,我已经有了以下内容:
def recursive(a,b,list1,n):
w = b - a
mid = a + w / 2
left = list1[0:mid]
right = list1[mid:len(list1)-1]
return recursive(a,mid,list1,n) + mid + recursive(mid,b,list1,n)
但我不确定如何将n融入这里。
注意:list1最初将为[a,b] - 我只是手动输入,但我相信有更好的方法来做到这一点。
n
,一旦它达到该值,就使用break
停止循环。 - MEdwin