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

Python 递归函数不会返回预期的对象,python,recursion,Python,Recursion,我已经编写了一个基本函数来递归地从ox.gdf_from_place函数中查找形状良好的多边形。基本上,这个想法是从_位置调用ox.gdf_,直到返回多边形为止。问题是,我的函数即使执行得很好,也不会返回任何内容 有人对如何使这项工作正常运行有什么建议吗 import shapely import osmnx as ox result_num = 0 def recursive_find_poly(poi, result_num): country = ox.gdf_from_pl

我已经编写了一个基本函数来递归地从ox.gdf_from_place函数中查找形状良好的多边形。基本上,这个想法是从_位置调用ox.gdf_,直到返回多边形为止。问题是,我的函数即使执行得很好,也不会返回任何内容

有人对如何使这项工作正常运行有什么建议吗

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)
您在if子句中忘记了返回语句:

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

您忘记了if子句中的return语句:


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

据我所知,递归函数应该总是返回一些东西,或者根本不应该返回任何东西。所以我认为递归函数的问题是:当你在if块中时,它不会返回任何东西,但是当它在else块中时,它会返回一些东西。如果你想办法重写你的函数,让它总是返回一些东西,我认为它会工作。

据我所知,递归函数应该总是返回一些东西,或者根本不应该返回任何东西。所以我认为递归函数的问题是:当你在if块中时,它不会返回任何东西,但是当它在else块中时,它会返回一些东西。如果你想办法重写你的函数,使它总是返回一些东西,我认为它会工作。

你为什么使用递归?为什么不简单的循环?@伙计,我用递归作为学习练习,你为什么用递归?为什么不简单循环?@Guy我正在使用递归作为学习练习
if type(country.unary_union) != shapely.geometry.polygon.Polygon:
    result_num += 1
    return recursive_find_poly(poi, result_num)
else:
    return country