为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁花不似锦 2022-10-05 18:26:40
我想练习一下递归,并认为在不规则矩阵中搜索会很有趣。我有一个有效的简单递归,但不知何故并没有完成整个数组。它找不到数字 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 = 5coordinates = searchArray(array, searched)print(coordinates)
查看完整描述

1 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

问题是,一旦对嵌套列表进行递归调用,无论是否找到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


查看完整回答
反对 回复 2022-10-05
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信