输出在递归函数中被擦除

2024-03-28 22:49:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我基本上已经在下面的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\u list\u方法上循环>;>;<;<;如果函数没有返回底部第3行中的intersection\u list\u方法。 我在这里做的问题是当我打电话的时候

find_new_int(node_in_ex, points)

同样,我循环使用的交叉点列表方法被删除,并创建了一个新的交叉点列表方法,但是我想循环列表中的每个点,看看函数是否会为交叉点列表方法中的每个点返回该列表,直到它结束

有什么帮助吗?你知道吗


Tags: 方法函数innode列表节点findmethod
1条回答
网友
1楼 · 发布于 2024-03-28 22:49:23

您的代码执行以下操作:

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

但你想要的是:

But if it didn't find a point which power > power sensitivity in THAT list I want it to again call the same function on each point in That list again till it returns something.

假设“returns something”的反义词是“returnsNone”,则如下所示:

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

相关问题 更多 >