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

如何用递归提取方阵的最内层子方阵?代码问题及递归实现求助

递归提取方阵最内层子方阵的实现方案

核心递归逻辑

递归的关键是逐步剥离方阵的最外层元素,直到剩下的方阵无法再剥离(边长≤2),此时的方阵就是最内层子方阵:

  • 终止条件:当方阵的行数(方阵为n×n,行数=列数)≤2时,直接返回当前方阵
  • 递归步骤:对于边长>2的方阵,去掉第一行、最后一行,同时剩余每行去掉首尾元素,得到更小的子方阵后继续递归处理

正确实现代码

def get_inner_matrix(matrix):
    n = len(matrix)
    # 终止条件:无法再剥离外层,返回当前方阵
    if n <= 2:
        return matrix
    # 生成去掉最外层后的子方阵
    sub_matrix = [row[1:-1] for row in matrix[1:-1]]
    # 递归处理子方阵
    return get_inner_matrix(sub_matrix)

测试验证

以你提供的4阶测试场景为例,假设测试方阵如下:

test_matrix = [
    [1, 2, 3, 4],
    [5, 11, 7, 8],
    [9, 7, 4, 10],
    [12, 13, 14, 15]
]

print(get_inner_matrix(test_matrix))  # 输出: [[11, 7], [7, 4]]

常见问题排查

如果你的代码不符合预期,大概率是以下原因:

  • 终止条件错误:比如把终止条件设为n==1,导致2阶方阵被错误继续剥离
  • 外层剥离不完整:只去掉了首尾行但没去掉每行的首尾元素,或者反过来
  • 递归传递错误:没有将剥离后的子方阵传入递归函数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:32:48