我正在尝试编写一个返回n个第一个平方数列表的递归函数。
例如,如果n为5,它将返回[0, 1, 4, 9, 16, 25]
我写了一个函数,但它并没有让我得到我想要的东西,它给了我一个连续的平方数列表,例如n是5:[0, 1, 2, 4, 16, 256,65536 ]
这是我的职责:
def premiersCarresRec(n) :
res = []
if n == 2 :
res.append(1)
res.append(4)
else :
tmp = premiersCarresRec(n - 1)
res.append(tmp[0] * tmp[0])
return res
答案 0 :(得分:0)
这不是递归的最佳做法,但似乎这就是你的目的。
lst = []
def square_rec(n):
if n == 0:
lst.append(0)
return 0
else:
lst.append(n**2)
return square_rec(n-1)
square_rec(5)
print lst
>>>[25, 16, 9, 4, 1, 0]
答案 1 :(得分:0)
您需要在递归中移动带有结果的列表:
def squares(n, res=None):
if res is None:
res = []
res.append(n * n)
if n > 0:
squares(n-1, res)
return res[::-1]
>>> squares(5)
[0, 1, 4, 9, 16, 25]