递归函数未返回正确的值

时间:2018-08-14 13:38:42

标签: python

我写了一个递归函数,该函数检查列表中的值并立即存储索引,一旦我获得了所需的值,就使用return语句从该函数中退出,即使它从子函数中退出也是如此不是从父函数中退出。Im缺少的任何东西都限制了它一旦找到值就完全退出该函数。

new_index=[]
def check_with_list(dd,check_value):
    global  new_index

    for index,h in enumerate(dd):
        if isinstance(h, list):
            new_index.append(index)
            check_with_list(h,check_value)
        elif h==check_value:
            new_index.append(index)
            import pdb;pdb.set_trace()
            return new_index
    else:
        new_index=[]



dd=['gcc','fcc',['scc','jhh'],['www','rrr','rrr']]
dd=check_with_list(dd,'rrr')

print dd

1 个答案:

答案 0 :(得分:0)

在子列表上调用check_with_list时,您不会返回结果。

def check_with_list(dd, check_value):
    for index,h in enumerate(dd):
        if isinstance(h, list):
            result = check_with_list(h,check_value)
            if result is not None:
                return (index,) + result 
        elif h == check_value:
            return (index,)
    # value not found
    return None


dd=['gcc','fcc',['scc','jhh'],['www','rrr','rrr']]
dd=check_with_list(dd,'rrr')

print dd