Scheme

alguem poderia me ajudar informando o que faz esse codigo?

(define (inverte-lista lis) (if (null? (cdr lis)) ;se chegou no último elemento (cons (car lis) aux) (inverte-lista (cdr lis) (cons (car lis) aux)) ) )

Vish!

Será que eu lembro?
Já mexi com Lisp no mestrado.

Bem, Lisp, Scheme, e outras linguagens funcionais, trabalham com listas e seus componentes, chamados de átomos.
Vou tentar comentar seu código. Eu não conheço Scheme, então estou “googlando” para ver o que cada função faz (menos car e cdr que eu lembro :smiley: ).

[code]// define uma função chamada lista, que recebe como parâmetro uma lista (lis)
(define (inverte-lista lis)

// cdr é uma função que extrai a cauda da lista, ou seja, a lista menos a cabeça (o primeiro átomo)
// este if então verifica se a cauda é vazia, ou seja, se já consumiu tudo até o último elemento
// de onde vc tirou esse código? acho que está errado aqui, nunca vai entrar no if se a lista tiver elementos...
(if (null? (cdr lis))   ;se chegou no último elemento  

    // insere o car da lista em aux
    (cons (car lis) aux)  

    // chama recursivamente a função inverte lista, passando o cdr da lista e o car + aux como parâmetro. 
    // pq usou cons de novo????
    (inverte-lista (cdr lis) (cons (car lis) aux))  
)  

) // fim da definição da função[/code]

Acho que esse código tem uns errinhos, não tem não?

na verdade preciso de um codgio que inverta recursivamente os elemento de uma lista encadeada. e depois de hora pensando nao encontrei a soluçao. ai procurei na net e encontrei esse codigo entao nao sei se ta certo ou errado entende.?
mas vc conseguiria me ajudar a inverter os elementos de uma lista encadeada simples recursivamente?
obrigado!

Mas é em Scheme?

pode ser em c java c++ qualqueer coisa do genero

Lição de casa???
Bem, se outra pessoa quiser ajudar, fique a vontade… Eu aqui baixando o Scheme p/ ajudar e só agora descubro que é lição de casa…
É o sono…