Inversão de Lista

Inversão de Lista

by Arthur Prado De Fazio -
Number of replies: 2

Estava tentando resolver o problema de inverter uma lista recursivamente, mas não estou conseguindo, o código do programa que estava tentando fazer é esse:

def invertelista (v):
    t=len(v)
    if t==1 or t==0:
        return v
    primeiro=v[0]
    v[0]=v[t-1]
    v[t-1]=primeiro
    return invertelista(v[1:t-1])

Mas quando coloco por exemplo invertelista([1,2,3,4,5,6,7,8,9,10]), o shell devolve o seguinte:
>>> invertelista(v)
[]
>>> v
[10, 2, 3, 4, 5, 6, 7, 8, 9, 1]


Sugestões?

In reply to Arthur Prado De Fazio

Re: Inversão de Lista

by Carlos Hitoshi Morimoto -

Sugestões?

experimente colocar um print("inicio: ", v) no início da função (antes de calcular o len(v)) para ver a lista sendo "transformada" e um print("prox: ", v) antes do último return. É isso que você quer que aconteça?

  

 
In reply to Carlos Hitoshi Morimoto

Re: Inversão de Lista

by cassio henrique -

Fiz uma função com três parâmetros, n = len(lista), k= 0, lista.
Com esse k percorri a lista de trás para frente, usando : "lista.append( nome_da_função(n,k+1, lista))" , quando k chega em n-1 retorno o ultimo valor da lista original (caso base, se o tamanho= 1  retorna lista[0]). 
É necessário retornar os valores da lista origina, então criei um if k < 0 , e retornei os valores de índice k.

Por fim, uso o tamanho da lista para retornar invertida:  return lista[n:]