some_par_impar_recursivo()

some_par_impar_recursivo()

por José Coelho de Pina -
Número de respostas: 0

Comentários?
Qual o consumo de tempo da função some_par_impar_recursiva()?

 


def main():
    '''(None) -> None
 
    Lê um inteiro n >=0 e uma sequência de n números inteiros e 
    imprime a soma dos números pares e a soma dos números ímpares 
    da sequência.
    '''
    n = int(input("Digite o número de elementos da sequência: ")) 
    v = []
    for i in range(0,n,1):
        print("Digite o %do. número: " %(i+1), end="")
        num = int(input())
        v.append(num)
    soma_par, soma_impar = some_par_impar_recursiva(v,n)
    print("soma par = %d, soma impar = %d" 
           %(soma_par,soma_impar))    
  
def some_par_impar_recursiva(v, n):
    '''(list, int) -> int, int

    Recebe uma lista v de números inteiros e um inteiro n e
    retorna dois valores, a soma dos números pares e a soma 
    dos números ímpares em v[0:n].

    Exemplos:
    >>> some_par_impar_recursiva([2,-5,7,12,15,7],2)
    2, -5
    >>> some_par_impar_recursiva([2,-5,7,12,15,7],3)
    2, 2
    >>> some_par_impar_recursiva([2,-5,7,12,15,7],4)
    14, 2
    >>> some_par_impar_recursiva([2,-5,7,12,15,7],6)
    14, 24
    ''' 
    if n == 0: # base 
        return 0, 0
    soma_par, soma_impar = soma_par_impar_recursiva(v,n-1)
    if v[n-1] % 2 == 0:
        soma_par += v[n-1]
    else:
        soma_impar += v[n-1]
    return soma_par, soma_impar

Python 3.4.3 |Anaconda 2.3.0 (32-bit)| (default, Jun  4 2015, 15:28:02) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> main()
Digite o número de elementos da sequência: 6
Digite o 1o. número: 2
Digite o 2o. número: -5
Digite o 3o. número: 7
Digite o 4o. número: 12
Digite o 5o. número: 15
Digite o 6o. número: 7
soma par = 14, soma impar = 24
>>> some_par_impar_recursiva([],0)
(0, 0)
>>> some_par_impar_recursiva([2,-5,7,12,15,7],0)
(0, 0)
>>> some_par_impar_recursiva([2,-5,7,12,15,7],2)
(2, -5)
>>> some_par_impar_recursiva([2,-5,7,12,15,7],1)
(2, 0)
>>> some_par_impar_recursiva([2,-5,7,12,15,7],3)
(2, 2)
>>> some_par_impar_recursiva([2,-5,7,12,15,7],4)
(14, 2)
>>> some_par_impar_recursiva([2,-5,7,12,15,7],5)
(14, 17)
>>> some_par_impar_recursiva([2,-5,7,12,15,7],6)
(14, 24)
>>> some_par_impar_recursiva([2,-5,7,12,15,7],6)