猿问

不规则矩阵的递归找不到结果

我想练习一下递归,并认为在不规则矩阵中搜索会很有趣。我有一个有效的简单递归,但不知何故并没有完成整个数组。它找不到数字 8-11。它需要返回匹配的坐标,以便我以后可以使用它。我错过了什么吗?



array = [

    [1, 2, [3, 4, [5, [6, [7, 0]]]], [8, 9], 10, 11]

    ]


def searchArray(array, searched, coordinates=[]):

    for i, dimension in enumerate(array):

        if type(dimension) == int:

            if dimension == searched:

                return coordinates+[i,]

        else:

            coordinates.append(i)

            return searchArray(dimension, searched, coordinates=coordinates)


searched = 5

coordinates = searchArray(array, searched)

print(coordinates)


繁花不似锦
浏览 78回答 1
1回答

慕工程0101907

问题是,一旦对嵌套列表进行递归调用,无论是否找到searched. 所以for循环永远不会继续查看列表的其余部分。返回前需要检查递归是否成功。此外,您不应该coordinates使用append(). 无论是否成功,您最终都会返回您下降到的所有坐标的列表。在递归中传递一个新列表作为参数。def searchArray(array, searched, coordinates=[]):    for i, dimension in enumerate(array):        if type(dimension) == int:            if dimension == searched:                return coordinates+[i,]        else:            found = searchArray(dimension, searched, coordinates=coordinates + [i])            if found:                return found    return None # Not found
随时随地看视频慕课网APP

相关分类

Python
我要回答