def canvia01(llista): """ Donada una llista d'enter, la modifica canviant tots els zeros per uns. >>> l = [3, 0, 55, 0, 0, 22, 1] >>> canvia01(l) >>> l [3, 1, 55, 1, 1, 22, 1] """ canvia01_rec(llista, 0) def canvia01_rec(llista, i): if i >= len(llista): return else: if llista[i] == 0: llista[i] = 1 canvia01_rec(llista, i+1) def esborra_negs(llista): """ Donada una llista de nombres, n'elimina tots els negatius """ esborra_negs_rec(llista, len(llista) - 1) def esborra_negs_rec(llista, i): if i < 0: pass else: if llista[i] < 0: del llista[i] esborra_negs_rec(llista, i-1) def compta_vocals(s): """ Retorna el nombre de vocals majúscules que conté s """ return compta_vocals_rec(s, 0) def compta_vocals_rec(s, i): if i >= len(s): return 0 else: if s[i] in 'AEIOU': c = 1 else: c = 0 return compta_vocals_rec(s, i+1) + c def cerca_pos_max(llista): """ Retorna una llista amb TOTES les posicions de llista que contenen l'element màxim >>> cerca_pos_max([2, 40, 8, 1, 40, 3]) [1, 4] """ return cerca_pos_max_rec(llista, 0) def cerca_pos_max_rec(llista, i): if i == len(llista) - 1: return [i] else: lpmax = cerca_pos_max_rec(llista, i+1) pmaxim = lpmax[0] if llista[i] > llista[pmaxim]: return [i] elif llista[i] == llista[pmaxim]: return [i] + lpmax else: return lpmax