Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: wolfblood en 10 Octubre 2022, 01:29 am



Título: ayuda con funciones recursivas en python
Publicado por: wolfblood en 10 Octubre 2022, 01:29 am
necesito que alguien me explique sobre la función recursiva en Python porfa es para poder hacer una tarea :huh: :huh: :huh:

MOD: Titulo modificado para ser mas descriptivo


Título: Re: ayuda con funciones recursivas en python
Publicado por: MCKSys Argentina en 10 Octubre 2022, 01:36 am
necesito que alguien me explique sobre la función recursiva en Python porfa es para poder hacer una tarea :huh: :huh: :huh:

Hola!

Qué es lo que necesitas que te expliquen? Porque en inet hay muchas explicaciones al respecto que son sencillas de entender: https://www.google.com/search?q=funciones+recursivas+en+python (https://www.google.com/search?q=funciones+recursivas+en+python)

Creo que necesitas ser más específico.

Saludos!


Título: Re: ayuda con funciones recursivas en python
Publicado por: wolfblood en 10 Octubre 2022, 01:50 am
esque tengo que hacer esto mira:


escribir un programa que lea numeros ingresados y luego devuelva el total
se deve desarrollar utilazando recursión.
no se puede utilizar ciclos
se ingrasan numeros hasta que el usuario ingrese espacio
si el primer input es un espacio deve imprimir 0


y tengo esto escrito en codigo y es lo que llevo pero nose si voy bien :




def sumar(lista):
    if len(lista) == 1:
        print(lista[0])
        return lista[0]
    else:
        print(lista[0])
        return lista[0] + sumar(lista[1:])



listaNumeros = []
valor=int(input("ingresa un valor:"))
if valor != 0:
    listaNumeros.append(valor)
    
print("Total Sumado: ", sumar(listaNumeros))



ojo no estoy pidiendo la solución solo quiero saber si voy bien encaminado o no


Título: Re: ayuda con funciones recursivas en python
Publicado por: wolfblood en 10 Octubre 2022, 03:05 am
actualizacion de mi codigo:


"""
escribir un programa que lea numeros ingresados y luego devuelva el total
se deve desarrollar utilazando recursión.
no se puede utilizar ciclos
se ingrasan numeros hasta que el usuario ingrese espacio
si el primer input es un espacio deve imprimir 0
"""

def sumar(lista):
    if len(lista) == 1:
        print(lista[0])
        return lista[0]
    else:
        print(lista[0])
        return lista[0] + sumar(lista[1:])



listaNumeros = []
valor=int(input("ingresa un valor:"))
if valor != 1:
    listaNumeros.append(valor)
elif valor == " ":
    print("0")

    
print("Total Sumado: ", sumar(listaNumeros))

literal funciona pero no se como hacer que vuelva a pedir el valor para poder sumar sin utilizar algún ciclo


Título: Re: ayuda con funciones recursivas en python
Publicado por: MCKSys Argentina en 10 Octubre 2022, 04:59 am
literal funciona pero no se como hacer que vuelva a pedir el valor para poder sumar sin utilizar algún ciclo

Hola!

Revisa el siguiente código:
Código
  1. from six.moves import input                         # Utilizo este modulo para tener compatibilidad entre python 2 y 3
  2.  
  3. def sumatoria_recursiva ():                         # Funcion recursiva
  4.    valor = str(input('Ingresa un valor:'))         # Pide valor al usuario
  5.    if valor.isdigit():                             # Si lo ingresado es un numero, entonces...
  6.        return int(valor) + sumatoria_recursiva()   # devuelve la suma de dicho valor MAS lo que devuelva el llamado de la funcion en forma recursiva
  7.    elif valor == ' ':                              # Si el valor es espacio, entonces...
  8.        return 0                                    # la funcion devuelve cero (en una suma, el cero es neutro)
  9.  
  10. print ('La sumatoria de los enteros ingreados es de {}'.format(sumatoria_recursiva())) # Aca inicia el llamado a la funcion
  11.  

Para que entiendas cómo va funcionando, te recomiendo debuggear el codigo en un IDE, como por ej.: PyCharm (edicion comunitaria).

Saludos!


Título: Re: ayuda con funciones recursivas en python
Publicado por: Danielㅤ en 10 Octubre 2022, 15:25 pm
Hola, yo no se porque usan librerías con códigos tan simples que no necesitan el uso de ellas, aunque en python existe la ventaja de que se puede importar sólo una parte de la librería y no todas sus funciones.

Por ejemplo también he visto códigos que utilizan expresiones regulares con operaciones muy simples, que tranquilamente, se pueden usar funciones tipo método para recortar u obtener la parte deseada de una cadena de caracteres.
En mis tiempos cuando programaba jamás usaba expresiones regulares porque simplemente no las necesitaba y el patron que queria obtener lo obtenía usando métodos.

En este caso  es usar una función recursiva que la misma no es mas que una función que se llama a si misma tratándose como si la función fuera un bucle que repite el procedimiento hasta cierto momento.


Saludos


Título: Re: ayuda con funciones recursivas en python
Publicado por: reymosquito en 10 Octubre 2022, 19:05 pm
tampoco entiendo el uso de bibliotecas innecesarias en algunos casos, pero...
re como muchos módulos te ahorran tiempo en cosas que ya están escritas. y las funciones recursivas bien implementadas ahorran memoria, claro que para eso, no hay que usarlas para huevadas.


Título: Re: ayuda con funciones recursivas en python
Publicado por: MCKSys Argentina en 11 Octubre 2022, 00:33 am
Hola!

El paquete six lo puse porque no sé si está programando en python 2 o 3. Como six provee compatibilidad para ambas versiones, lo puse. Pero el comentario en mi código dice que sólo se usa por compatibilidad. Despues de todo, input sólo está en python3. En python 2 sería raw_input: https://six.readthedocs.io/ (https://six.readthedocs.io/)

Tampoco soy de agregar libs sin necesidad, pero la compatibilidad, para mí, es esencial.

Saludos!