0
我有一個在python中的鏈表,我想寫一個過濾器函數,如果對f(item)
的調用是真的,返回一個新的鏈接列表,這個實現有一個過濾器,從下往上建立列表。我無法理解這種遞歸。這是什麼類型的遞歸?這種類型的遞歸是否有名字?
我更加熟悉像斐波那契這樣的遞歸遞歸在最底層的遞歸。
class Link:
empty =()
def __init__(self, first, rest=empty):
assert rest is Link.empty or isinstance(rest, Link)
self.first = first
self.rest = rest
def __getitem__(self, i):
if i == 0:
return self.first
else:
return self.rest[i-1]
def __len__(self):
return 1 + len(self.rest)
def __repr__(self):
if self.rest == Link.empty:
return "Link(" + str(self.first) + ")"
return 'Link({0}, {1})'.format(self.first, repr(self.rest))
def filter_link(f, s):
if s is Link.empty:
return s
else:
filtered = filter_link(f,s.rest) # How does this work?
if f(s.first):
return Link(s.first, filtered)
else:
return filtered