我不确定如何让我的递归正常工作或避免无限重复。这是我到目前为止所拥有的:
def listSquareR(lst):
if len(lst)== 1:
return lst[0]**2
else:
return lst[0]**2+[listSquareR(lst[1:])]
最后的返回线明显是错误的
我不确定如何让我的递归正常工作或避免无限重复。这是我到目前为止所拥有的:
def listSquareR(lst):
if len(lst)== 1:
return lst[0]**2
else:
return lst[0]**2+[listSquareR(lst[1:])]
最后的返回线明显是错误的
另一种可能:
def listSquare(L):
if L: return [L[0]**2] + listSquare(L[1:])
else: return []
一个更短的版本(正如 Cristian Ciupitu 在下面提到的)是:
def listSquare(L):
return [L[0]**2] + listSquare(L[1:]) if L else []
你几乎是对的,但关键是要注意你的类型。在您的代码中:
def listSquareR(lst):
if len(lst)== 1:
return lst[0]**2 # Returning a number
else:
return lst[0]**2+[listSquareR(lst[1:])] # Returning a number plus a list of a list
我们只需要两个小修复:
def listSquareR(lst):
if len(lst)== 1:
return [lst[0]**2] # Returning a list
else:
return [lst[0]**2] + listSquareR(lst[1:]) # Returning a list plus a list
def SquareArea(width):
if width == 0:
return 0
else:
return SquareArea(width-1) + (2*width-1)
这是我最近用来求正方形面积的递归函数。由于正方形的面积是 Side*Side,因此可以使用它来找到任何函数的平方。现在你需要做的就是做一个循环,例如:
for i in range (list):
并在 i 上实现此功能,或者使用 while 循环。
newList=[]
length = len(list)
while i != length:
newList.append(SquareArea(i))
然后返回 newList