我试图递归返回单链表的子列表。
例:列表=3-
sub(list,1,2)应返回4-
参数1-开始索引
参数2-子列表的长度
我有点麻烦,因为我的代码只返回子列表的最后一个元素,而不是整个子列表。
def sub(list, start, length) -> Node:
if list is None:
return None
elif start <= 0:
if length ==1:
list.next = None
return list
else:
return sub(list.next, start - 1, length - 1)
else:
return sub(list.next, start - 1, length)
在遍历主结构时,可以在sub
函数中使用一个参数来存储累积的子列表:
def sub(lst, s, e, c = 0, new_l = None):
if c >= e:
return new_l
if lst is None:
raise IndexError('index out of bounds')
return sub(lst.next, s, e, c = c+1, new_l = None if c + 1 <= s else getattr(new_l, 'add_node', Lst)(lst.value))
Lst
实施:
class Lst:
def __init__(self, val=None):
self.value, self.next = val, None
def add_node(self, val):
if self.value is None:
self.value = val
elif self.next is None:
self.next = Lst(val)
else:
self.next.add_node(val)
return self
def __repr__(self):
return f'{self.value}{"" if self.next is None else " -> "+repr(self.next)}'
l = Lst()
for i in range(10):
l.add_node(i)
print(sub(l, 0, 4))
print(sub(l, 2, 7))
print(sub(l, 5, 12))
输出:
0 -> 1 -> 2 -> 3
2 -> 3 -> 4 -> 5 -> 6
File "<stdin>", line 6, in sub
[Previous line repeated 7 more times]
File "<stdin>", line 5, in sub
IndexError: index out of bounds
问题内容: def foo(a): a.append(1) if len(a) > 10: print a return a else: foo(a) 为什么此递归函数返回None(请参见下面的脚本)?我不太明白我在做什么错。 问题答案: 您不会在该子句中返回任何内容:
我做了一个使用递归方法反转单链表的函数。然而,我在执行下面的代码时遇到了一些困难: 我应该如何在ReverseCursive函数/方法中传递第二个参数,以便执行它? 作为第二个参数,我想简单地传递链表的头节点。但是我不知道如何从类的init方法中获取头节点linked_list 我试了几件事,但都解决不了。也许我不太擅长OOP概念。有人能帮我解决这个问题吗?
我需要为链表队列实现一个toString()递归方法。我知道我的toString方法在我上周做的一个链表实现中工作得很好,所以我在处理它的队列方面出了问题。 我的QueueList的toString方法: 以及我的构造函数,例如QueueList: 我试图用这个测试看看里面发生了什么: 与输出 我意识到这是因为我说的是前面的在方法的递归部分,但即使我将其更改为,我的输出是 这可能与我的排队和退队方
最后一个函数返回15->20,然后组合为root.next->temp,但是在返回temp的步骤之后,为什么会返回根值。即10->15->20,而我希望只返回temp。 请找到代码,
我是编程新手,从Python开始。我的问题是关于链表,我为链表写了一个类,我需要做的是有一个函数,一个输入作为指向列表头部的引用。据我所知,'linked_list.Head',其中linked_list是有问题的列表的名称。具体使用递归,我试图找到列表的长度作为这个函数的输出。下面是我的代码,我不太明白如何移动到下一个节点,并在本例中使用递归返回节点数。