Python 3.x 关于带岛数的递归函数问题 岛屿数量说明

Python 3.x 关于带岛数的递归函数问题 岛屿数量说明,python-3.x,algorithm,recursion,Python 3.x,Algorithm,Recursion,给定“1”(陆地)和“0”(水)的二维栅格地图,计算岛屿的数量。岛屿被水包围,通过水平或垂直连接相邻的陆地而形成。您可以假设网格的所有四条边都被水包围 示例1: 输入:网格=[ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"] ] 产出:1 示例2: 输入:网格=[ ["1","1","0","0","0"], ["1","1","0","0","0"], ["0

给定“1”(陆地)和“0”(水)的二维栅格地图,计算岛屿的数量。岛屿被水包围,通过水平或垂直连接相邻的陆地而形成。您可以假设网格的所有四条边都被水包围

示例1:

输入:网格=[
["1","1","1","1","0"],
["1","1","0","1","0"],
["1","1","0","0","0"],
["0","0","0","0","0"]
]
产出:1
示例2:

输入:网格=[
["1","1","0","0","0"],
["1","1","0","0","0"],
["0","0","1","0","0"],
["0","0","0","1","1"]
]
产出:3
我正在尝试使用递归函数将每个岛标记为“2”:

def tag_元素(网格:List[List[str]],tag,i,j):
如果网格[i-1][j]=“1”:
网格[i-1][j]=标签
返回标记元素(网格、标记、i-1、j)
elif网格[i+1][j]=“1”:
网格[i+1][j]=标记
返回标记元素(网格、标记、i+1、j)
elif网格[i][j-1]=“1”:
网格[i][j-1]=标签
返回标记元素(网格、标记、i、j-1)
elif网格[i][j+1]=“1”:
网格[i][j+1]=标记
返回标记元素(网格、标记、i、j+1)
其他:
回流栅
网格[1][1]=“1”
标记元素(网格、str(标记)、1、1)
输入为
网格=
[['0', '0', '0', '0', '0', '0', '0'], 
['0', '1', '1', '1', '1', '0', '0'], 
['0', '1', '1', '0', '1', '0', '0'], 
['0', '1', '1', '0', '0', '0', '0'], 
['0', '0', '0', '0', '0', '0', '0'], 
['0', '0', '0', '0', '0', '0', '0']]
---
我期望得到的是
网格=
[['0', '0', '0', '0', '0', '0', '0'], 
['0', '2', '2', '2', '2', '0', '0'], 
['0', '2', '2', '0', '2', '0', '0'], 
['0', '2', '2', '0', '0', '0', '0'], 
['0', '0', '0', '0', '0', '0', '0'], 
['0', '0', '0', '0', '0', '0', '0']]
---
但我得到的不正确结果是
网格=
[['0', '0', '0', '0', '0', '0', '0'], 
['0', '2', '2', '1', '1', '0', '0'], 
['0', '2', '2', '0', '1', '0', '0'],
['0', '2', '2', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '0', '0']]

现在,我对递归函数以及为什么我的递归函数不起作用感到困惑。有人能帮我吗,我真的很感激。

回来得太早了。标记的元素只会递归到第一个陆地邻居,而没有机会检查其余的元素