如何用递归提取方阵的最内层子方阵?代码问题及递归实现求助
递归提取方阵最内层子方阵的实现方案
核心递归逻辑
递归的关键是逐步剥离方阵的最外层元素,直到剩下的方阵无法再剥离(边长≤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
相关产品推荐
相关产品推荐

