0%

递归的美妙

递归 —- 相信相信的力量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def duplicate_link(s, val):
"""Mutates s so that each element equal to val is followed by another val.

>>> x = Link(5, Link(4, Link(5)))
>>> duplicate_link(x, 5)
>>> x
Link(5, Link(5, Link(4, Link(5, Link(5)))))
>>> y = Link(2, Link(4, Link(6, Link(8))))
>>> duplicate_link(y, 10)
>>> y
Link(2, Link(4, Link(6, Link(8))))
>>> z = Link(1, Link(2, (Link(2, Link(3)))))
>>> duplicate_link(z, 2) # ensures that back to back links with val are both duplicated
>>> z
Link(1, Link(2, Link(2, Link(2, Link(2, Link(3))))))
"""
"*** YOUR CODE HERE ***"
if s is Link.empty:
return s
if s.first == val:
new_s = Link(val)
duplicate_link(s.rest, val)
new_s.rest, s.rest = s.rest, new_s
else:
duplicate_link(s.rest, val)
return None

核心重点

相信duplicate_link(s.rest, val)能够完全处理好后面的节点。