Python - Tener dificultades para crear recursividad en Python

 
Vista:
sin imagen de perfil

Tener dificultades para crear recursividad en Python

Publicado por BathanF (1 intervención) el 02/12/2022 12:08:52
Soy nuevo en Python y me estoy enseñando a mí mismo usando herramientas de Internet. Tengo problemas para incorporar recursividad en partes de mi código y la tarea que me han asignado requiere recursividad. Leí esta publicación, que es realmente informativa, sin embargo, creo que hay un problema en mi código. Cualquier ayuda sería muy apreciada.
1
2
3
4
5
6
7
8
9
10
lst = [12, 1, 44, 61, 0]
 
def smallestNum(lst):
    if len(lst) == 0:
        raise ValueError("List is empty")
    elif len(lst) == 1:
        print(lst[0])
    return min(lst[0], smallestNum(lst[1:])
 
print(smallestNum(lst))
Error:
1
ValueError: List is empty
La tarea 1 me pide que utilice la recursividad para devolver el valor más bajo de una lista y sigo recibiendo un error.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Tener dificultades para crear recursividad en Python

Publicado por tincopasan (1082 intervenciones) el 02/12/2022 18:45:34
practicamente lo tenés, cambiaria un poquito la sintaxis:

1
2
3
4
5
6
7
8
9
10
11
12
#-*- coding: utf  -8 -*-
lst = [12, 1, 44, 61,0]
 
def smallestNum(lst):
    if len(lst) ==0:
        return("Lista vacía")
    elif len(lst) == 1:
        return lst[0]
    else:
        return min(lst[0], smallestNum(lst[1:]))
 
print(smallestNum(lst))

el primer if es porque supongo que querés verificar que no pasen una lista vacía
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Tener dificultades para crear recursividad en Python

Publicado por Rolando José (44 intervenciones) el 30/07/2023 02:35:03
El problema que veo es que no se está comparando nada, luego como van a saber cual es el menor o mayor de toda la lista?

Más o menos el pseudo seria:

LA FUNCIÓN pide una lista y un valor mínimo min
Si minimo es mayor que lista[1] :
Llamo a la misma función y le doy la lista desde el valor 1 en adelante que seria lst[1:] min
Si no es mayor retorno mínimo que va a ser el mínimo de toda la lista.

El secreto para hacer funciones recursivas, es que debe haber una comparación que da dos caminos, el primer camino llama a la misma función con una variable menor o ya revisada y el segundo camino es terminar retornar el valor que se busca para salir del ciclo.

Entonces las funciones recurcivas siempre tendrán una variable que soluciona el problema que no es posible usar en esa función y la segunda función si la puedo usar pero debo descartar la o hacerle un proceso antes de saber si tiene solución o no.

No se si me hice entender, esperemos 10 minutos mientras pruebo la teoría.

Si por ejemplo yo quiero hacer un listado de archivos, el último directorio que yo busco no tendrá ni más archivos ni más directorios.

Si encuentro un directorio llamo a la misma función e inicio el ciclo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar