Programa de Python para encontrar la suma total de una lista anidada usando recursividad

Se proporciona una lista anidada. La tarea es imprimir la suma de esta lista usando recursividad. Una lista anidada es una lista cuyos elementos también pueden ser una lista. 

Ejemplos: 

Input: [1,2,[3]]
Output: 6

Input: [[4,5],[7,8,[20]],100]
Output: 144

Input: [[1,2,3],[4,[5,6]],7]
Output: 28

Recursión: En recursión, una función se llama a sí misma repetidamente. Esta técnica se usa generalmente cuando un problema se puede dividir en subproblemas más pequeños de la misma forma.

Implementación:

Iterar a través de la lista y cada vez que encontremos que un elemento de la lista también es una lista, eso significa que tenemos que hacer la misma tarea de encontrar la suma con esta lista de elementos (que también se puede anidar). Así que hemos encontrado un subproblema y podemos llamar a la misma función para realizar esta tarea y simplemente cambiar el argumento a esta sublista. Y cuando el elemento no es una lista, simplemente agregue su valor a la variable total global.

Python3

# Python Program to find sum
# of nested list using Recursion
 
def sum_nestedlist( l ):
   
    # specify that global variable is
    # referred to here in this function
    total = 0
     
    for j in range(len(l)):
       
        if type(l[j]) == list :
           
            # call the same function if
            # the element is a list
            total+= sum_nestedlist(l[j])
        else:
           
            # if it's a single element
            # and not a list, add it to total
            total += l[j]  
             
    return total
             
print(sum_nestedlist([[1,2,3],[4,[5,6]],7]))
Producción

28

Complejidad temporal: O(N), donde N es el número total de elementos de la lista.
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por shubhi18195 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *