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

如何用单个递归函数实现链表反转与递归打印?

单个递归函数实现链表的递归打印

你可以通过给递归打印函数设置默认参数,将原本两个函数的逻辑合并到单个递归函数中。另外注意原代码里的helper_print存在变量错误:打印时误用了未定义的temp,应该改为current。

修改后的递归打印函数

直接替换原LinkedList类中的recursive_print和helper_print函数:

def recursive_print(self, current=None):
    # 首次调用自动传入链表头节点
    if current is None:
        current = self.head
    # 递归终止条件:当前节点为空
    if current is None:
        return
    print(f"{current.data} -> ", end=' ')
    # 递归调用,传入下一个节点
    self.recursive_print(current.next)

完整代码示例

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None

    def reverse_Util(self, curr, prev):
        if curr.next is None:
            self.head = curr
            curr.next = prev
            return
        next_node = curr.next
        curr.next = prev
        self.reverse_Util(next_node, curr)

    def reverse(self):
        if self.head is None:
            return
        self.reverse_Util(self.head, None)

    def push(self, new_data):
        new_node = Node(new_data)
        new_node.next = self.head
        self.head = new_node

    def printL(self):
        temp = self.head
        while(temp):
            print(str(temp.data) + " -> ", end=' ')
            temp = temp.next

    # 单个递归打印函数
    def recursive_print(self, current=None):
        if current is None:
            current = self.head
        if current is None:
            return
        print(f"{current.data} -> ", end=' ')
        self.recursive_print(current.next)

# Main function
llist = LinkedList()
llist.push(1)
llist.push(2)
llist.push(3)
llist.push(4)

print("Given linked list")
llist.printL()

llist.reverse()

print("\nReverse linked list")
llist.recursive_print()

逻辑说明

  • 首次调用recursive_print()时,current默认值为None,函数会自动将self.head赋值给current,开启递归遍历。
  • 每次递归调用时,传入当前节点的next指针,直到current为None时触发终止条件,结束递归。

内容的提问来源于stack exchange,提问作者M. Onur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:55:23