Python 为什么算法问题的实现不起作用?

Python 为什么算法问题的实现不起作用?,python,algorithm,depth-first-search,Python,Algorithm,Depth First Search,问题是要找出岛屿的数量 解决方案1: class Solution: def dfs(self, row, column, grid): if row < 0 or column < 0 or row>= len(grid) or column >= len(grid[0]): return 0 if grid[row][column] == '0': return 0

问题是要找出岛屿的数量

解决方案1:

class Solution:    
    def dfs(self, row, column, grid):
        if row < 0 or column < 0 or row>= len(grid) or column >= len(grid[0]):
            return 0
        if grid[row][column] == '0':
            return 0
        grid[row][column] = '0'                    
        self.dfs(row+1, column, grid)
        self.dfs(row-1, column, grid)
        self.dfs(row, column+1, grid)
        self.dfs(row, column-1, grid)
    def numIslands(self, grid: List[List[str]]) -> int:
        count = 0
        for row in range(len(grid)):
            for column in range(len(grid[0])):
                if grid[row][column] == '1':
                    self.dfs(row, column, grid)
                    count += 1

        return count

类解决方案:
def dfs(自身、行、列、网格):
如果行<0或列<0或行>=len(网格)或列>=len(网格[0]):
返回0
如果网格[行][列]=“0”:
返回0
网格[行][列]=“0”
self.dfs(行+1,列,网格)
self.dfs(行1、列、网格)
self.dfs(行、列+1、网格)
self.dfs(行,列-1,网格)
def numIslands(self,grid:List[List[str]])->int:
计数=0
对于范围内的行(长度(网格)):
对于范围(len(网格[0])中的列:
如果网格[行][列]==“1”:
self.dfs(行、列、网格)
计数+=1
返回计数
解决方案2(不起作用)

类解决方案:
def dfs(自身、行、列、网格):
如果行<0或列<0或行>=len(网格)或列>=len(网格[0]):
返回0
如果网格[行][列]=“0”:
返回0
网格[行][列]=“0”
对于范围(-1,2)内的i:
对于范围(-1,2)内的j:
如果我=0或j=0:
self.dfs(行+i,列+j,网格)
def numIslands(self,grid:List[List[str]])->int:
计数=0
对于范围内的行(长度(网格)):
对于范围(len(网格[0])中的列:
如果网格[行][列]==“1”:
self.dfs(行、列、网格)
计数+=1
返回计数
有人能解释为什么2不起作用吗。 我正在运行一个循环,其中每个语句都给出一个递归调用

但是这种逻辑在Java中工作,为什么?
第二个代码也考虑对角线是有效的。这就是它与第一个不同的原因

11000
11000
00100
00011

两者都是有效代码,但它们回答的问题不同。上面的输入,第一个将返回1,第二个将返回3。

是,没有看到。谢谢
11000
11000
00100
00011