我有一个叫做带有两个参数(SX和SZ)的矩形的类。我需要做一个函数,将我的第一个矩形分成两部分,在一个宽的维度上随机放置一条线,然后这两个新的矩形将分为两部分,然后是四部分。我使用一个简单的树结构和这样的功能:python中的树:创建递归子项
def devide(self):
if (self.SX>self.SZ): #check which dimension is bigger
temp=randint (int(self.SX/4), int(self.SX*3/4)) #generate random from x/4,3x/4
left=rectangle(temp, self.SZ) #create nodes
right=rectangle(self.SX-temp, self.SZ)
self.addChild(left)
self.addChild(right)
else:
temp=randint (int(self.SZ/4), int(self.SZ*3/4))
up=rectangle(self.SX, temp)
down=rectangle(self.SX, self.SZ-temp)
self.addChild(up)
self.addChild(down)
for c in self.getChilds():
while (c.level()<3): ####why doesn't it work?:(
c.devide()
,功能level()
—应该(但并不)返回多少级是根与实际节点之间的值:
def level(self):
root=self
a=0
while root.isRoot()==False:
a+=1
root=root.getParent()
return a
重要对我来说,事情是:
如何限制这些分割(例如,只有1 + 2 + 4 + 8个节点)?我的意思是,Python中没有静态变量,我的函数
level()
无法正常工作。如何获得访问年幼的孩子(例如,让他们在阵列)
我在编程新的,尤其是在Python。请有人帮助我吗?
要在级别数增加的限制只是通过它通过像这样的关键字:'def divide(rectangle,Max_levels = 5)',然后在递归调用中的每次迭代执行以使得“max_level_1”和一旦max_level达到0时停止拒绝。 – sean