输出在递归函数中被擦除

时间:2015-04-29 08:22:28

标签: python recursion

我基本上已经在下面的python中创建了这个递归函数,它计算从另一个节点到另一个节点的功率,并根据节点的覆盖半径找到。

我想要做的是从这个函数输出并再次调用递归函数而不会丢失我得到的输出,我不知道该怎么做。

这是以下功能:

def find_new_int(node_in_ex, old_inters):
    global Power_Sensitivity
    global copy_of_int_list
    intersection_list_method = []
    for wall_coordinates in lines:
        if intersection_rand_point(wall_coordinates[0], wall_coordinates[1], node_in_ex-1, old_inters) is not False:
            intersection_list_method.append(intersection_rand_point(wall_coordinates[0], wall_coordinates[1], node_in_ex-1, old_inters))
    intersection_list_method = sorted(list(itertools.chain(*intersection_list_method)), key=cal_distance_av)
    for points in intersection_list_method:
        if cal_pow_rec_plndwall(node_in_ex, points) > Power_Sensitivity:
            return intersection_list_method
    for points in intersection_list_method:
        return find_new_int(node_in_ex, points)

我想循环上第一次运行函数时输出的intersection_list_method>> IF<<该函数没有从底部返回第3行中的intersection_list_method。 我在这里做的事情的问题是当我打电话时

find_new_int(node_in_ex, points)

我循环的intersection_list_method再次被擦除并创建了一个新的但是我想循环该列表中的每个点,看看该函数是否会为intersection_list_method中的每个点返回该列表,直到它结束

任何帮助?

1 个答案:

答案 0 :(得分:0)

您的代码执行此操作:

for points in intersection_list_method:
    return find_new_int(node_in_ex, points)

但你想要的是:

  

但是,如果它没有找到一个权力点>我希望它再次在该列表中的每个点上调用相同的函数,直到它返回一些内容。

假设“返回某事”的反面是“返回None”,那将是这样的:

for points in intersection_list_method:
    result = find_new_int(node_in_ex, points)
    if result is not None:
        return result