# Exercicio 1.1 def comprimento(lista): return comprimento(lista[1:]) + 1 if lista else 0 # Exercicio 1.2 def soma(lista): return soma(lista[1:]) + lista[0] if lista else 0 # Exercicio 1.3 def existe(lista, elem): return False if not lista else ( True if lista[0] == elem else existe(lista[1:], elem)) # Exercicio 1.4 def concat(l1, l2): return l1 if not l2 else concat(l1 + [l2[0]], l2[1:]) # Exercicio 1.5 def inverte(lista): return [lista[-1]] + inverte(lista[:-1]) if lista else [] # Exercicio 1.6 def capicua(lista): return lista[0] == lista[-1] and capicua(lista[1:-1]) if lista else True # Exercicio 1.7 def concat_listas(lista): return lista[0] + concat_listas(lista[1:]) if lista else [] # Exercicio 1.8 def substitui(lista, original, novo): if not lista: return [] if lista[0] == original: lista[0] = novo return [lista[0]] + substitui(lista[1:], original, novo) # Exercicio 1.9 def fusao_ordenada(lista1, lista2): if not lista1: return lista2 if not lista2: return lista1 if lista1[0] < lista2[0]: return [lista1[0]] + fusao_ordenada(lista1[1:], lista2) return [lista2[0]] + fusao_ordenada(lista1, lista2[1:]) # Exercicio 1.10 def lista_subconjuntos(lista): if not lista: return [[]] return lista_subconjuntos(lista[1:]) + [lista[:1] + x for x in lista_subconjuntos(lista[1:])] # Exercicio 2.1 def separar(lista): pass # Exercicio 2.2 def remove_e_conta(lista, elem): pass # Exercicio 3.1 def cabeca(lista): pass # Exercicio 3.2 def cauda(lista): pass # Exercicio 3.3 def juntar(l1, l2): pass # Exercicio 3.4 def menor(lista): pass # Exercicio 3.6 def max_min(lista): pass