递归函数不会返回预期的对象

时间:2019-05-13 10:46:29

标签: python recursion

我编写了一个基本函数,以从shapely函数中递归地查找ox.gdf_from_place多边形。本质上,这个想法是调用ox.gdf_from_place直到返回多边形。问题是即使执行正常,我的函数也不会返回任何内容。

有人对如何使它起作用有任何建议吗?

import shapely
import osmnx as ox

result_num = 0

def recursive_find_poly(poi, result_num):

    country = ox.gdf_from_place(poi, which_result=result_num)

    if type(country.unary_union) != shapely.geometry.polygon.Polygon:

        result_num += 1

        recursive_find_poly(poi, result_num)
    else:

        return country

test = recursive_find_poly('Istanbul', result_num)

2 个答案:

答案 0 :(得分:3)

您忘记了-n子句中的return语句:

if

否则,匹配调用返回的值将丢失。

答案 1 :(得分:1)

据我所知,递归函数应该始终返回或完全不返回任何内容。因此,我认为您的递归函数的问题是:当您在 if 块中时,它不返回任何内容,但是当它在 else 块中时,它确实会返回的东西。如果您找到一种方法来重写您的函数,以便它始终返回某些内容,那么我认为它会起作用。