我想使用 OpenGL 在 Python中模拟体心立方晶体结构。我已经编写了代码来获取next_nodes
,如果节点满足边界则打印,否则递归查找下一个节点返回。
但是代码有一些问题,它无限运行。谁能帮我解决这个问题。在下面发布相关代码(删除了所有 OpenGL 调用)。
def get_node(x,y,z,side):
return [x+side,y,z],[x,y+side,z],[x,y,z+side],[x-side,y,z],[x,y-side,z],[x,y,z-side]
def goto_next_nodes(x,y,z,cube_side,next_nodes,boundary_x,boundary_y,boundary_z):
for node in next_nodes:
if 0<=node[0]<=boundary_x and 0<=node[1]<=boundary_y and 0<=node[2]<=boundary_z:
print node
x,y,z=node[0],node[1],node[2]
next_nodes=get_node(x,y,z,cube_side)
goto_next_nodes(x,y,z,cube_side,next_nodes,boundary_x,boundary_y,boundary_z)
else:
return
def display_fcc(cube_side,boundary_x,boundary_y,boundary_z):
x=y=z=0
next_nodes=get_node(x,y,z,cube_side)
goto_next_nodes(x,y,z,cube_side,next_nodes,boundary_x,boundary_y,boundary_z)
display_fcc(5,10,10,10)
递归始于display_fcc
函数,goto_next_node
是递归函数。