ana.bela2015 Posted April 28, 2015 Report Share Posted April 28, 2015 (edited) 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. Edited April 29, 2015 by ana.bela2015 Quote Link to comment Share on other sites More sharing options...
0 ArteEN Posted April 29, 2015 Report Share Posted April 29, 2015 (edited) A segunda função busca por um valor em uma lista, e tem três tipos de retorno 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 Linha 1 >>> l = lista, x = valor, q = booleano Linha 2 >>> retorna l, se o mesmo for igual a uma lista vazia Linha 3 >>> em h é colocado o retorno da chamada recursiva onde l é passada excluindo o primeiro índice, q é invertido Linha 4 >>> consulta se o índice zero tem o valor x e q seja verdadeiro, retorna h Linha 5 >>> retorna uma lista com o primeiro valor de l e o resultado da chamada recursiva gardada em h Edited April 29, 2015 by ArteEN Quote Link to comment Share on other sites More sharing options...
Question
ana.bela2015
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]
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.