2017-01-28 2 views
0

Я пытаюсь написать рекурсивную функцию, которая возвращает список из n первых квадратов чисел. Например, если п 5 было бы вернуть [0, 1, 4, 9, 16, 25] я написал функцию, но она не получила меня именно то, что я хотел, он дал мне список последовательных квадратов чисел, например, п 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

ли эта работа для вас? –

Смежные вопросы