0

我有一个函数,它递归地搜索二维矩阵以找到值 0 并返回其位置。这是代码:

    def findNextZero(x, y, board):
       if board[x][y] == 0:
          return (x, y)
       else:
           if y == (SIZE-1):
              # if its at the edge of the "board", the 2d matrix
              findNextZero(x+1, 0, board)
           else:
              findNextZero(x, y+1, board)

当我打印 (x,y) 时,该函数将打印正确的元组。但是,如果我尝试返回它,它会说返回值为 None。为什么会出现这种情况?

4

1 回答 1

5

忽略了递归调用的返回值。为这些添加return语句:

def findNextZero(x, y, board):
    if board[x][y] == 0:
        return (x, y)
    else:
        if y == (SIZE-1):
            # if its at the edge of the "board", the 2d matrix
            return findNextZero(x+1, 0, board)
        else:
            return findNextZero(x, y+1, board)

如果没有这些returns,findNextZero()函数只会结束而不会显式返回任何内容,从而导致无论如何都返回默认返回值。

于 2013-11-05T19:31:21.010 回答