簡體   English   中英

輸出在遞歸函數中被擦除

[英]Output gets erased in a recursive function

我基本上已經在python down中創建了此遞歸函數,該函數在下面計算從另一個節點到達另一個節點的功率,並基於該節點的覆蓋半徑進行查找。

我想要做的是從此函數中獲取輸出,並對其再次調用遞歸函數,而不會丟失我得到的輸出,我也不知道該怎么做。

這是下面的功能:

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)

我想循環使用我第一次運行函數>> IF <<時輸出的intersection_list_method,該函數沒有從底部開始的第三行返回交集_list_method。 我在這里做什么的問題是當我打電話時

find_new_int(node_in_ex, points)

再次刪除我正在循環的交集列表_方法,並創建一個新的交集,但是我想在該列表中的每個點上循環,並查看函數是否會為交集_列表_方法中的每個點返回該列表,直到結束

有什么幫助嗎?

您的代碼執行此操作:

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

但是您想要的是:

但是,如果它在THAT列表中沒有找到功率>功率靈敏度的點,我希望它再次在該列表的每個點上再次調用相同的函數,直到它返回某些值。

假設“ returns something”的反義詞是“ returns None ”,則如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM