Jump to content
Fórum Script Brasil
  • 0

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


ana.bela2015

Question

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 by ana.bela2015
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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

Edited by ArteEN
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...