【发布时间】:2019-02-05 12:29:29
【问题描述】:
我想用递归反转链表中数字的顺序。
(1,(2,(3,()))) ----> (3,(2,(1,())))
我的链表是嵌套的元组。 First(xs) 返回第一个元素,在上面的示例中,它可能是右侧的 1 或 3。 Rest(xs) 返回所有其他元素,右侧的 (2,(3,( ))) 或 (2,(1,( ) )。
我的代码如下所示:
empty = ()
def reversed(xs):
if xs == (first(xs), empty):
return first(xs)
else:
return reversed(rest(xs)), first(xs)
但它会产生以下输出:
((3, 2), 1)
我想,我已经很接近了,但我已经没有办法解决这个问题了。
谁能帮帮我?
谢谢
【问题讨论】:
-
你为什么要用python写Haskell代码?结果既不可读也不快。
-
向我们展示你的链表类。
-
@Aran-Fey 这个 Haskell 代码在哪里?我忘记了一些缩进,你是这个意思吗?它是用python编写的。
-
@DocDriven 没有类。 OP 的链表是一堆嵌套的元组。
-
@Peet,python 是一种多范式语言。它支持多种风格的编程:命令式、面向对象、函数式、过程式等。当然,功能集表明 Python 偏好某些风格而不是其他风格,但不要让这阻止您使用您选择的风格。跨度>
标签: python recursion linked-list reverse