zoukankan      html  css  js  c++  java
  • 递归

    什么是递归呢?

      一个函数在内部调用函数自身

      每次调用都将问题转化为子问题来执行

    废话不多说, 上实例:

    • 以相反的顺序打印字符串
    def revers(index, str):
        if index >= len(str):
            return
        revers(index + 1, str)
        print(str[index])
    
    revers(0, 'abcde')
    • 反转列表: 不开辟新列表的情况下
    def revers(index=0, alist):
        if index >= len(alist):
            return alist
        ele = alist.pop()
        alist.insert(index, ele)
        revers(index+1, alist)
    • 给定一个链表, 交换每两个相邻节点  如  1, 2, 3, 4   ->  2, 1, 4, 3
    class Node():
        def __init__(self, item):
            self.item = item
            self.next = None
    
    class Link():
        def __init__(self):
            self.head = None
        def add(self, item):
            node = Node(item)
            if not self.head:
                self.head = node
                return
            cur = self.head
            while cur.next:
                cur = cur.next
            cur.next = node
            return
        def travel(self):
            if not self.head:
                print('空链表')
                return
            cur = self.head
            print(cur.item)
            while cur.next:
                cur = cur.next
                print(cur.item)
        def swap(self, node, n=1):
            if n:
                self.head = self.head.next
            if not node or not node.next:
                return
            node, node.next, node.next.next = node.next, node, node.next.next
            node.next.next = self.swap(node.next.next, 0)
            return node
    
        # 反转链表
        def reversList(self, head):
            pre = head
            cur = head.next
            pre.next = None
            while cur:
                tmp = cur.next
                cur.next = pre
                pre, cur = cur, tmp
            self.head = pre
            
        # 递归实现反转链表
        def revers(self, pre, cur, n=1):
            tmp = cur.next
            if n:
                pre.next = None
            cur.next = pre
            if tmp:
                self.revers(cur, tmp, 0)
            else:
                self.head = cur
            
  • 相关阅读:
    C#.NET Winform 快速开发平台
    .Net C/S系统开发框架(楚楚原创)
    C# Winform 开发框架
    php导出excel表格超链接
    tp3使用PHPExcel 导出excel
    tp文件上传、表格转数组
    BUG修复记录
    tp3切库问题记录
    个人总结
    初识爬虫(番外篇-python)
  • 原文地址:https://www.cnblogs.com/zhangjian0092/p/11743513.html
Copyright © 2011-2022 走看看