Python实现递归法反转列表

回顾递归三原则:

  1. 递归算法必须有基本情况
  2. 递归算法必须改变其状态并向基本情况靠近
  3. 递归算法必须递归的调用自己

代码如下:

def reverse_list(lst):
    if len(lst) == 2:
        return lst.append(lst.pop(0))
    else:
        temp = lst.pop(0)
        reverse_list(lst)
        lst.append(temp)
    return lst  

思路:

  1. 基本情况,列表长度为2的反转,直接弹出首位元素并追加到列表尾部即可
  2. 算法应朝基本情况演进,当列表长度大于2时,不断弹出首位元素并用变量记录
  3. 算法调用规模更小的自身
  4. 执行到最小情况后的返回操作,不断将规模稍大子程序的temp追加到队尾

总结 : 因为使用了pop(0)的操作,所以算法的复杂度为O(n)

如果有更简便的方法,欢迎指点讨论

你可能感兴趣的:(python,排序算法,开发语言,递归算法)