python-3.x - 为什么在 Python 的这个递归函数中,即使满足基本条件,执行也会继续?
问题描述
以下是 Al Sweigart 的“使用 Python 和 Pygame 制作游戏”一书中名为 Ink Spill 的游戏的代码片段。(完整代码在这里:http: //invpy.com/inkspill.py)
此递归函数负责将旧颜色(在本例中为“2”,即 mainBoard[0][0])更改为新颜色(在本例中为“3”,即 mainBoard[1][0])玩家点击。
我的问题是:在这个例子中,为什么即使满足基本条件并执行返回,执行仍然会跳转到函数内的下一个块。
我已经在函数中多次使用打印语句和不同的参数以及在Visualize Code网站上对此进行了测试......我仍然不明白!
在这里,我已经删除了许多我的打印语句,并且在开始时只留下了两个。如果您运行此代码,您将在控制台上看到第三行满足条件 (3 !=2),但执行仍在继续!
我真的很感激任何帮助。非常感谢。
顺便说一句,不幸的是,其他人提出的另一个问题:为什么这个递归函数即使在它的基本情况得到满足后仍然继续没有回答我的问题,虽然非常相似!
boardWidth = 3
boardHeight = 3
mainBoard = [[2, 0, 0], [3, 0, 0], [4, 0, 0]]
# (blue, red, red),(yellow, red, red),(orange, red, red)
def floodFill(board, oldColor, newColor, x, y):
print(board[x][y], oldColor)
print(mainBoard)
if board[x][y] != oldColor:
return
board[x][y] = newColor # change the color of the current box
# Make the recursive call for any neighboring boxes:
if x > 0:
floodFill(board, oldColor, newColor, x - 1, y)
if x < boardWidth - 1:
floodFill(board, oldColor, newColor, x + 1, y)
if y > 0:
floodFill(board, oldColor, newColor, x, y - 1)
if y < boardHeight - 1:
floodFill(board, oldColor, newColor, x, y + 1)
floodFill(mainBoard, 2, 3, 0, 0)
解决方案
推荐阅读
- firebase - 错误状态:更新我的应用程序后 DocumentSnapshotPlatform 中不存在字段
- python - 如何从预训练的 GPT2 模型中获取 onnx 格式?
- javascript - Ajax成功无法返回响应
- file - GNU find -exec 测试文件 --mime-type -b =="image/jpg"
- c# - 无法在网格视图中打印文件名
- amazon-web-services - 超出无服务器订阅者限制
- javascript - hypeledger 结构 JavaScript-应用程序节点 app.js 不起作用
- javascript - res.send() 没有对 POSTMAN 中的 POST 请求做出响应
- c# - C# - 搜索 Excel 和 Powerpoint 文件格式字节序列
- google-sheets - ArrayFormula 使用自定义函数触发更改