Python - mayor de n numeros ingresados por el usuario

 
Vista:
sin imagen de perfil
Val: 6
Ha disminuido su posición en 19 puestos en Python (en relación al último mes)
Gráfica de Python

mayor de n numeros ingresados por el usuario

Publicado por Ricardo (4 intervenciones) el 21/08/2019 00:06:41
hola, necesito ayuda encontrando una funcion recursiva que me entregue el mayor de n numeros ingresados por el usuario mediante input. solo puede tener if, else, elif y funciones recursivas, y no puedo usar listas. ¿a alguien se le ocurre? me he molido la cabeza y no encuentro una manera
uso python 2.7.8
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
Imágen de perfil de Victorio
Val: 9
Ha disminuido su posición en 8 puestos en Python (en relación al último mes)
Gráfica de Python

mayor de n numeros ingresados por el usuario

Publicado por Victorio (6 intervenciones) el 21/08/2019 07:29:49
Buenas, aquí te dejo mi solución a tu problema.

En este caso he decidido utilizar un conjunto, aunque también lo puedes implementar con otra estructura como una lista y el orden del algoritmo sería el mismo.

La idea es sencilla (basada en la pila): extraemos elementos del conjunto hasta encontrarnos con el conjunto vacío (en cuyo caso el máximo sería el elemento que hemos desapilado), y en la vuelta de la recursión al primer nivel (nivel 0) vamos comparando los primeros elementos con el maximo actual, y actualizando.

Te dejo un ejemplo gráfico comentado al final del código.

Un saludo.



Código del programa:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
def main():
    """Funcion principal del programa"""
    # La entrada del usuario es una cadena
    entrada = input("Introduce los numeros separados por espacio: ")
    numeros = set(entrada.split())
    numero_maximo = maximo(numeros)
    print(f"El maximo es {numero_maximo}")
 
 
def maximo(numeros):
    """Funcion recursiva encargada de encontrar el maximo"""
    # Extraemos el primer elemento del conjunto actual
    numero = int(numeros.pop())
 
    # Caso base
    if(len(numeros) == 0):
        return numero
 
    # Caso general
    maximo_actual = maximo(numeros)
    return maximo_actual if maximo_actual > numero else numero
 
 
if __name__ == "__main__":
    main()
 
 
 
 
# Ejemplo grafico de la recursion
# {55, 1, 2, 99, 3} -> 99   (Nivel 0) - CASO GENERAL
# {1, 2, 99, 3} -> 99       (Nivel 1) - CASO GENERAL
# {2, 99, 3} -> 99          (Nivel 2) - CASO GENERAL
# {99, 3} -> 99             (Nivel 3) - CASO GENERAL
# {3} -> 3                  (Nivel 4) - CASO GENERAL
# {} -> 3                   (Nivel 5) - CASO BASE
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
Imágen de perfil de Hector Madriz
Val: 361
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

mayor de n numeros ingresados por el usuario

Publicado por Hector Madriz (69 intervenciones) el 21/08/2019 08:14:45
Buen dia, prueba esto:

1
2
3
4
5
6
7
8
9
10
11
def BuscarMayor(Cantidad):
    Cantidad=Cantidad-1
    Numero=int(input("Numero :"))
    Numero2=Numero
    if Cantidad>0 :Numero2=BuscarMayor(Cantidad)
    if Numero2>Numero:
       return Numero2
    else:
       return Numero
Cantidad=int(input("Cuantos Numeros: "))
print ("El mayor es",BuscarMayor(Cantidad))

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 6
Ha disminuido su posición en 19 puestos en Python (en relación al último mes)
Gráfica de Python

mayor de n numeros ingresados por el usuario

Publicado por Ricardo (4 intervenciones) el 22/08/2019 00:42:21
hola, su respuesta me sirvió mucho, pero no hay una manera de hacerlo sin que el usuario tenga que poner la cantidad? la tarea es que que me entregue el mayor unicamente habiendo escrito los numeros, por ejemplo, 6, 9, 345, 78,90, y que me entregue 345, sin haber puesto que eran 5 numeros. eso, muchas, gracias, voy a intentar ver si puedo guiarme de su función
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
Imágen de perfil de Hector Madriz
Val: 361
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

mayor de n numeros ingresados por el usuario

Publicado por Hector Madriz (69 intervenciones) el 22/08/2019 18:01:11
Buen día Ricardo, prueba esto:

1
2
3
4
5
6
7
8
9
10
def Mayor():
    Numero=Numero2=input("Numero: ")
    if Numero!="":
       Numero2=Mayor()
       if int(Numero2)>int(Numero): Numero=Numero2
       return Numero
    else:
       return 0
print ("Introduzca numeros positivos \n<ENTER> para salir...\n")
print ("El mayor es: ", Mayor())

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar