ana.bela2015 Postado Abril 28, 2015 Denunciar Share Postado Abril 28, 2015 (editado) 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. Editado Abril 29, 2015 por ana.bela2015 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Abril 29, 2015 Denunciar Share Postado Abril 29, 2015 (editado) 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 Editado Abril 29, 2015 por ArteEN Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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 para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.