Prova 1: soma_pos_neg()

Prova 1: soma_pos_neg()

by José Coelho de Pina -
Number of replies: 0

Comentários?
Dúvidas?
Outras soluções?

#-----------------------------------------------------------
def soma_pos_neg(seq):
    '''(list) -> int, int
  
    Recebe uma lista seq de números e retorna dois números: 
    a soma dos números positivos e a soma dos números negativos
    na lista.
    '''
    n = len(seq)
    # caso base: resolva o problema diretamente
    if n = 0: return 0, 0

    # reduza a instância do problema e aplique a recursão
    soma_pos, soma_neg = soma_pos_neg(seq[0:n-1])

    # resolva a instância corrente
    if seq[n-1] > 0: soma_pos += seq[n-1]
    else: soma_neg += seq[n-1]

    # retorne a solução 
    return soma_pos, soma_neg

#-----------------------------------------------------------
def soma_pos_neg(seq):
    '''(list) -> int, int
  
    Recebe uma lista seq de números e retorna dois números: 
    a soma dos números positivos e a soma dos números negativos
    na lista.
    '''
    n = len(seq)
    # caso base: resolva o problema diretamente
    if n = 0:
        return 0, 0
    
    # reduza a instância do problema e aplique a recursão
    soma_pos, soma_neg = soma_pos_neg(seq[:n-1])

    # resolva a instância corrente
    if seq[n-1] > 0:
        soma_pos += seq[n-1]
    else:
        soma_neg += seq[n-1]

    # retorne a solução    
    return soma_pos, soma_neg

#-----------------------------------------------------------
def soma_pos_neg(seq):
    '''(list) -> int, int
  
    Recebe uma lista seq de números e retorna dois números: 
    a soma dos números positivos e a soma dos números negativos
    na lista.
    '''
    if seq == []: return 0, 0
    soma_pos, soma_neg = soma_pos_neg(seq[:-1])
    if seq[-1] > 0: soma_pos += seq[-1]
    else: soma_neg += seq[-1]
    return soma_pos, soma_neg

#-----------------------------------------------------------
def soma_pos_neg(seq):
    '''(list) -> int, int
  
    Recebe uma lista seq de números e retorna dois números: 
    a soma dos números positivos e a soma dos números negativos
    na lista.
    '''
    if seq == []:
        return 0, 0
    soma_pos, soma_neg = soma_pos_neg(seq[:-1])
    if seq[-1] > 0:
        soma_pos += seq[-1]
    else:
        soma_neg += seq[-1]
    return soma_pos, soma_neg