You need to enable JavaScript to run this app. 逐步骤讲解Python数组反转的递归方法实现逻辑
优惠活动
大模型
产品
解决方案
定价
更多

逐步骤讲解Python数组反转的递归方法实现逻辑

递归反转数组代码执行逻辑详解

完整实现代码

# 递归反转数组的Python程序
# 函数功能:反转数组A中下标从start到end的部分
def reverseList(A, start, end):
    # 递归终止条件:首尾指针相遇或交叉,不需要再交换
    if start >= end:
        return
    # 交换当前首尾指针指向的元素
    A[start], A[end] = A[end], A[start]
    # 缩小问题规模:左指针右移,右指针左移,递归处理内层子数组
    reverseList(A, start+1, end-1)
 
# 测试代码
A = [1, 2, 3, 4, 5, 6]
print(A)
reverseList(A, 0, 5)
print("Reversed list is")
print(A)

核心逻辑说明

这个递归方法基于分治思路,每次只处理当前待反转子数组的首尾元素交换,剩下的内层子数组的反转问题和原问题逻辑完全一致,因此可以递归调用自身完成,直到待处理的子数组长度≤1时(不需要再反转)停止。
注意:Python中列表属于可变对象,函数内对列表元素的修改会直接作用于原列表,因此该函数不需要额外返回反转后的数组

逐步骤执行拆解(以示例输入A = [1,2,3,4,5,6]为例)

初始调用为reverseList(A, 0, 5),执行流程如下:

  • 第一层调用:start=0,end=5,0<5不触发终止条件,交换A[0]和A[5],数组变为[6,2,3,4,5,1],递归调用reverseList(A,1,4)
  • 第二层调用:start=1,end=4,1<4不触发终止条件,交换A[1]和A[4],数组变为[6,5,3,4,2,1],递归调用reverseList(A,2,3)
  • 第三层调用:start=2,end=3,2<3不触发终止条件,交换A[2]和A[3],数组变为[6,5,4,3,2,1],递归调用reverseList(A,3,2)
  • 第四层调用:start=3,end=2,3>=2触发终止条件,直接返回,递归逐层结束,整个反转操作完成

运行结果说明

程序输出如下:

# 初始打印原数组
1 2 3 4 5 6
Reversed list is
# 调用反转函数后打印的结果
6 5 4 3 2 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 07:24:03