zkr*_*anc 2 python recursion function list
我只使用这些函数使用递归来反转列表时遇到问题:
def head(xs):
return xs[0]
def tail(xs):
return xs[1:]
def empty(xs):
return len(xs) == 0
Run Code Online (Sandbox Code Playgroud)
我可以做这个:
def p(xs1, xs2):
if not empty(tail(xs1)):
p(tail(xs1), xs2)
xs2.append(head(xs1))
def p05(xs):
s = []
p(xs, s)
return s
Run Code Online (Sandbox Code Playgroud)
有没有办法不使用append()?
def head(xs):
return xs[0]
def tail(xs):
return xs[1:]
def empty(xs):
return len(xs) == 0
def reverse(xs):
if empty(xs): return []
return reverse(tail(xs))+[head(xs)]
xs = range(4)
print(reverse(xs))
Run Code Online (Sandbox Code Playgroud)
产量
[3, 2, 1, 0]
Run Code Online (Sandbox Code Playgroud)