1)def f(a, B):
if a%b == 0: return a/b+1
return a*b
print reduce(f,[1,3,3,4,4])
2)def f(l,x,q):
if l==[]: return l
h = f(l[1:] ,x,not q)
if l[0]==x and q: return h
return l[:1]+h
int f([1,2,3,1,2,3,1,2,3],1, True) O programa devolve : [2, 3, 1, 2, 3, 2, 3] print f([1,2,3,1,2,3,1,2,3],1, False) O programa devolve: [1, 2, 3, 2, 3, 1, 2, 3]
Eu botei um print da lista recebida como parâmetro logo no início da função para tentar entender o comportamento desse segundo programa.
Mas ainda não consegui entender.