我在 Python(3.2 版)中有一个二维数组,如下所示:
...AAA....
...AAABB..
..BBBBBCC.
.....CCCC.
.DDD..CC..
.DDD......
它代表一种带有不同颜色区域的地图。上面的示例显示了四个不同的区域,A、B、C 和 D。
下面是索引数组的示例:map[1][5] == 'A' 将返回 True。
我正在尝试编写一个函数,该函数接受这样的数组和行/列索引,并返回具有相同“颜色”的相邻空格的数量。因此,使用上面的示例,这里有一些返回值(参数分别是数组、行号和列号:
6 <-- countArea(map, 5, 2)
8 <-- countArea(map, 2, 8)
我想将此实现为递归函数,但我无法弄清楚。这是我到目前为止所拥有的:
def countArea(map, row, col):
key = map[row][col]
if (map[row-1][col] == key):
return 1 + countArea(map, row-1, col)
elif (map[row+1][col] == key):
return 1 + countArea(map, row+1, col)
elif (map[row][col+1] == key):
return 1 + countArea(map, row, col+1)
elif (map[row][col-1] == key):
return 1 + countArea(map, row, col-1)
else:
return 1
我知道我在这里缺少一些基本的东西。我基本上是在说“这是当前角色,现在看每个方向看它是否具有相同的角色。”
我的问题是,我在这个递归定义中遗漏了什么?
谢谢你的帮助。