Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
退出递归循环-python_Python_Loops_Recursion_Exit - Fatal编程技术网

退出递归循环-python

退出递归循环-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

我正在写一个小的碰撞检查函数。如果'is_collision'函数返回'True',函数'extend_until'应该停止执行所有递归函数并返回相应循环的起点。我不太确定该如何执行

我有一个沿长度方向的1.0单位的离散分辨率,因此在“延伸到”函数中开始初始if条件

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