2017-01-28 10 views
0

最初の2乗の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

はあなたのためにこの仕事をしていますか? –