递归函数python

时间:2017-01-28 22:42:22

标签: python-3.x recursion

我正在尝试编写一个返回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

2 个答案:

答案 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]