You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unique Paths II问题:自实现递归方案的段错误排查求助

迷宫障碍物递归解法问题分析

思路正确性判断

你的思路方向没问题——通过判断上方/左方单元格是否为障碍物来决定是否能从该方向抵达当前位置,但存在逻辑漏洞:

  • 视频里先检查当前单元格是否为-1,是提前终止无效路径:如果当前格子本身是障碍物,直接返回0,避免无意义的递归。
  • 你的方案只检查来向单元格,却忽略了当前单元格本身就是障碍物的情况,这会导致递归继续进入无效区域,甚至触发越界。

段错误的核心原因

段错误几乎都是数组越界访问导致的,常见场景:

  • 递归时未正确处理边界(比如行/列索引小于0时仍尝试访问数组)
  • 检查上方/左方单元格前,没有先判断该单元格是否在合法范围内,直接访问导致越界

修复后的递归逻辑示例

假设你的递归函数为countPaths(i, j, grid),核心逻辑应调整为:

# 先处理边界与当前单元格有效性:越界或当前是障碍物,直接返回0
if i < 0 or j < 0 or grid[i][j] == -1:
    return 0
# 到达起点(假设起点是(0,0)),返回1条有效路径
if i == 0 and j == 0:
    return 1
# 递归计算上方和左方的路径数(已通过前置判断确保不会越界或访问障碍物)
up = countPaths(i-1, j, grid)
left = countPaths(i, j-1, grid)
return up + left

额外提示

递归确实会超时,后续可以通过记忆化搜索(缓存(i,j)的计算结果)优化,这也是该问题动态规划解法的核心思路。

内容的提问来源于stack exchange,提问作者Tanish Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:15:39