【发布时间】:2015-04-15 11:47:21
【问题描述】:
作为练习,我在 python 中使用递归实现了 map 函数,如下所示:
#map function that applies the function f on every element of list l and returns the new list
def map(l,f):
if l == []:
return []
else:
return [f(l[0])] + map(l[1:],f)
我知道python不支持尾递归优化,但是我将如何以尾递归的方式编写相同的函数呢?
请帮忙 谢谢你
【问题讨论】:
-
为什么这个函数不是尾递归的?
-
不是因为map不是最后一个操作,map的结果是加到[f(l[0])]中的,所以递归过程中的每一个栈帧都需要
-
好的,所以您递归地生成元素,然后将它们组合到一个列表中。迭代过程会在每一步中更新列表的状态并将其传递给下一次迭代,对吗?您需要更多帮助吗?
-
奇怪的是,我昨天已经发布了一个关于这个的答案! stackoverflow.com/questions/6964392/…
标签: python recursion tail-recursion