Articles of recursión de

Combinaciones de algoritmo recursivo

Necesito escribir una función recursiva que calcule todas las combinaciones posibles de longitud “n” en una lista, en Python, sin importar nada como itertools etc. Así que lo que tengo hasta ahora es: if n == 0: return [[]] elif lst == []: return [] else: rest = subsets(lst[1:], n-1) for next in lst: # […]

¿Cómo atravesar un árbol binario con un generador recursivo?

Estoy tratando de atravesar un árbol binario que se crea en el siguiente código. para ser precisos, el árbol binario es una clase y debe incluir un iterador que llame a otra función, a saber inorder (). este método debe ser un generador recursivo y generar el valor de los nodos en cada iteración. Intenté […]

Seguimiento de la función de Python

Para hacer más visible el proceso de recursión, se da este ejemplo: def fib(n): if n == 0: return 0 elif n == 1: return 1 else: return fib(n – 1) + fib(n – 2) def trace(f): f.indent = 0 def g(x): print(‘| ‘ * f.indent + ‘|–‘, f.__name__, x) f.indent += 1 value = […]

pickle.dump meet RuntimeError: profundidad de recursión máxima excedida en cmp

Me he dado cuenta de que puede deberse a una estructura de datos hermosa o recursiva. sin embargo, la estructura de datos que causa el error no parece ser un problema: class Movie: def __init__(self, name=””, dscore=0, mscore=0, durl=””, murl=””): self.name = name self.dscore = float(dscore) self.mscore = float(mscore) self.durl = durl self.murl = murl […]

Encontrar la diferencia entre números consecutivos en una lista (Python)

Dada una lista de números, estoy tratando de escribir un código que encuentre la diferencia entre elementos consecutivos. Por ejemplo, A = [1, 10, 100, 50, 40] por lo que la salida de la función debería ser [0, 9, 90, 50, 10] . Aquí está lo que tengo hasta ahora tratando de usar la recursión: […]

peligro de funciones recursivas

A menudo la gente dice que no se recomienda usar funciones recursivas en Python (restricciones de profundidad de recursión, consumo de memoria, etc.) Tomé un ejemplo de permutación de esta pregunta . def all_perms(str): if len(str) <=1: yield str else: for perm in all_perms(str[1:]): for i in range(len(perm)+1): yield perm[:i] + str[0:1] + perm[i:] Luego […]

¿Cómo devolver todas las combinaciones válidas de n pares de paréntesis?

def paren(n): lst = [‘(‘ for x in range(n)] current_string = ”.join(lst) solutions = list() for i in range(len(current_string)+1): close(current_string, n, i, solutions) return solutions def close(current_string, num_close_parens, index, solutions): “””close parentheses recursively””” if num_close_parens == 0: if current_string not in solutions: solutions.append(current_string) return new_str = current_string[:index] + ‘)’ + current_string[index:] if num_close_parens and is_valid(new_str[:index+1]): […]

Disminuir recursivamente una lista por 1

Pregunta de tarea muy rápida y fácil. Lo tengo funcionando bien, pero creo que hay una mejor forma de hacerlo Una forma más pythonica. Aquí está mi código para disminuir recursivamente cada elemento de una lista en 1. l = range(30) def recurseDecrMap(l, x = []): if len(l) == 0: return [] else: x.append(l[0] -1) […]

Vectorizar un cálculo de descuento numpy

Un término común en finanzas y aprendizaje de refuerzo es la recompensa acumulada descontada C[i] basada en una serie de tiempo de recompensas crudas R[i] . Dada una matriz R , nos gustaría calcular C[i] satisfaciendo la recurrencia C[i] = R[i] + discount * C[i+1] con C[-1] = R[-1] (y devuelve la matriz completa C […]

Caminar / iterar sobre un diccionario nested de profundidad arbitraria (el diccionario representa un árbol de directorios)

Estoy casi seguro de que hay una solución simple para esto, pero he pasado horas leyendo y releyendo el mismo conjunto de resultados relacionados que no responden a mi problema. Contexto de esta pregunta (incluido para completar, pero siéntase libre de omitir esto) Esto surgió porque quiero que un usuario pueda seleccionar un grupo de […]