Ir para conteúdo
Fórum Script Brasil
  • 0

Alguém pode me ajudar a entender esse dois programas?


ana.bela2015

Pergunta

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 por ana.bela2015
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

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 por ArteEN
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...