1. Exercicis Resolts Tema 9
Exercici 9.1
def suma_enters(m): """ Suma els enters entre 1 i m. """ if m==2: return 0 else: return suma_enters(m-1) + (m-1)
Exercici 9.2
def longitud(cadena): """ Retorna la longitud duna cadena de caracters """ if not len(cadena): return 0 else: return 1 + longitud(cadena[1:])
Exercici 9.3
>>>def compta_a(cadena): """ Compta les as que hi ha en una cadena de paraules """ if not cadena: return 0 elif cadena[0] != "a": return compta_a(cadena[1:]) else: return 1 + compta_a(cadena[1:])
Exercici 9.4
def posicio(l,e): #l:llista ordenada d'enters #e:enter contingut a l if l[0]== e: return 0 else: return 1 + posicio(l[1:],e)
Exercici 9.5
def palindroma(a): if len(a)==1: return True if len(a)==2: return a[0]==a[1] else: if a[0]==a[-1]: return True and palindroma(a[1:len(a)-1]) else: return False
_Exercici 9.6
def inversa(l): if len(l)==0: pass elif len(l)==1: return l elif len(l)==2: return [l[1]]+[l[0]] else: return [l[-1]]+inversa(l[1:len(l)-1])+[l[0]]
_Exercici 9.6_ (senzill)
def inversa(l): if len(l)==0: return [] else: return inversa(l[1:])+[l[0]]
_Exercici 9.7
def fib(n): if n==0: return 0 elif n==1: return 1 else: return fib(n-1) + fib(n-2)
_Exercici 9.8 (lent)
def eleva(x,y): if y==0: return 1 elif y==1: return x else: return eleva(x,y-1)*eleva(x,1)
_Exercici 9.8 (rĂ pid)
def eleva2(x,y): if y==0: return 1 elif y%2==0: return eleva2(x*x,y/2) else: return x*eleva2(x,y-1)
_Exercici 9.8_ (senzill)
def potencia(x,y): if y == 1: return x else : return potencia(x,y-1) * x