退出递归循环-python
我正在写一个小的碰撞检查函数。如果'is_collision'函数返回'True',函数'extend_until'应该停止执行所有递归函数并返回相应循环的起点。我不太确定该如何执行 我有一个沿长度方向的1.0单位的离散分辨率,因此在“延伸到”函数中开始初始if条件退出递归循环-python,python,loops,recursion,exit,Python,Loops,Recursion,Exit,我正在写一个小的碰撞检查函数。如果'is_collision'函数返回'True',函数'extend_until'应该停止执行所有递归函数并返回相应循环的起点。我不太确定该如何执行 我有一个沿长度方向的1.0单位的离散分辨率,因此在“延伸到”函数中开始初始if条件 def is_collision(query): print "Collision occurred" return True def extend_until(start, goal): if goal
def is_collision(query):
print "Collision occurred"
return True
def extend_until(start, goal):
if goal-start <= 1.0:
if is_collision(goal):
# if YES all recursion should stop and return.
return start
else:
midpoint = (start+goal)/2
extend_until(start, midpoint)
extend_until(midpoint, goal)
return goal
if __name__ == '__main__':
p1 = 0
p2 = 4
new_configuration = extend_until(p1, p2)
print new_configuration
def是_冲突(查询):
打印“发生冲突”
返回真值
def延长到(开始,目标):
如果目标开始这足够好吗
def is_collision(start, goal):
if goal-start <= 1.0:
print('Collision occurred')
return True
return False
def extend_until(start, goal):
print("Start is: "+str(start))
if is_collision(start, goal):
# if YES all recursion should stop and return.
return goal-start
else:
#midpoint = (start+goal)/2
#extend_until(start, midpoint)
start = start + 1
return extend_until(start, goal)
if __name__ == '__main__':
p1 = 0
p2 = 4
new_configuration = extend_until(p1, p2)
print('New Configuration is: '+ str(new_configuration))
这里没有使用递归。您需要返回函数以使其递归。在else循环中,它可以是return extend\u until(start,middpoint),而不是return extend\u until(start,middpoint)
。但是您在那里使用了两条语句。此外,返回目标
不应该存在。它不适用于此设置。请详细说明函数扩展的输入和输出以及它应该做什么。'扩展函数'的输入通常是2个点。在这种情况下,点是1维Al、 目标:离散两个给定输入点之间的距离(在上述情况下,分辨率为1.0)并检查每个离散点是否无冲突。如果碰撞函数返回True,则整个递归应停止并返回值。该函数应该做什么?感谢Abhijeetk431的努力。但这不是我要寻找的输出。p1=0,p2=4我的分辨率为1.0。这意味着我必须按顺序检查[1.0,2.0,3.0]的冲突。对于上述示例代码,“is_collision”函数默认返回True,这意味着在检查is_collision(1.0)时给我的答案为True,所有内容都应终止返回1.0并将其分配给新的_配置。编辑了以前的答案。请告知这是否适用于您
Start is: 0
Start is: 1
Start is: 2
Start is: 3
Collision occurred
New Configuration is: 1