Python 如何使用递归将函数应用于列表
如何使用递归将square(x)之类的函数应用于[1,2,3]之类的列表?我希望在不使用内置map函数的情况下获得结果[1,4,9]。 我写了这样的东西,但这会导致永远不会结束的错误。我如何才能改变这一点Python 如何使用递归将函数应用于列表,python,Python,如何使用递归将square(x)之类的函数应用于[1,2,3]之类的列表?我希望在不使用内置map函数的情况下获得结果[1,4,9]。 我写了这样的东西,但这会导致永远不会结束的错误。我如何才能改变这一点 lst=[1,2,3] def f(x): return x**2 def map(lst,f): i=0 if
lst=[1,2,3]
def f(x):
return x**2
def map(lst,f):
i=0
if i>len(lst):
return 0
else:
lst[i]=f(lst[i])
i+=1
return map(lst,f)
这项工作:
def f(x):
return x ** 2
def recursive_map(values, f):
if not values:
return []
else:
# Here we concatenate the f(head) + tail together:
return [f(values[0])] + recursive_map(values[1:], f)
values = [1, 2, 3, 4, 5]
result = recursive_map(values, f)
print(result)
[1,4,9,16,25]
不确定这是否有助于您理解如何编写递归函数。请记住,您总是从“end”子句开始,在本例中,当输入为空时,返回空列表。欢迎使用堆栈溢出!您似乎在要求某人为您编写一些代码。堆栈溢出是一个问答网站,而不是代码编写服务。请学习如何编写有效的问题。您不需要使用递归来实现
map
。大多数问题,如“我如何使用递归来做[事情]?”最终都会得到非常棘手的解决方案,因为递归不是一个一刀切的工具。它对于迭代树或表示递归关系非常有用,但对于替换for循环来说就不那么有用了。非常感谢!我也犯过类似的错误,但我也犯过其他错误。