# función recursiva: una función que se llama a sí misma
# factorial de un número: 5!=5*4*3*2*1 multiplicación de todos los números hasta el 1
# factorial de un número: 5! = 5*4! multiplicación del número por el factorial de ese número -1
# Si yo quiero haccer una función recursiva:
# identificar el caso base: Siempre hay un final donde devolvemos un valor y no otra llamada
# if numero<2 devuelvo 1
# poner nuestra función como una llama a ella misma
# numero*factorial(numero-1)
# En esta llamada de alguna manera nos acercamos al caso base
def factorialRecursivo(numero):
if numero < 2:
return 1
else:
return numero * factorialRecursivo(numero - 1)
print(factorialRecursivo(5)) # 120
# funciones de orden superior
# utilizar funciones como parámetros
# yo tengo una función procesar que tiene dos parámetros
# una función y un número
def procesar(funcion, numero):
return funcion(numero)
def cuadrado(numero):
return numero**2
def doble(numero):
return numero*2
print(procesar(cuadrado,3)) # cuadrado es un parámetro
print(procesar(doble,3)) # doble es un parámetro