2017-01-28 166 views
0

我試圖寫一個遞歸函數,它返回n個第一個平方數的列表。 例如,如果n爲5它將返回[0, 1, 4, 9, 16, 25] 我寫了一個功能,但它並沒有得到我正是我想要的,它給了我連續的平方數的列表例如n爲5:[0, 1, 2, 4, 16, 256,65536 ] 這裏是我的功能:遞歸函數python

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

這不是遞歸的最佳做法,但似乎這就是你的意思。

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] 
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] 
+0

這是否對你的工作? –