El número de formas en que puede ordenar n objetos (función factorial):
Digamos que tienes n objetos. Digamos que la función f (n) da el número de formas en que puede ordenarlos
Debe elegir uno para ser el primero, y puede elegir cualquiera de los n objetos para ser el primero. Después de seleccionar ese como el primero, el número de objetos que quedan por ordenar es n – 1, por lo que debe ser el caso que
- Soy bueno en algoritmos y estructuras de datos, ¿cuál debería ser mi estrategia para comenzar una carrera independiente en este dominio?
- ¿Por qué los marcos para componer música aleatoria algorítmica como SoundHelix no son más populares?
- ¿Existe un algoritmo existente para la siguiente pregunta? Si no, ¿cuál es la respuesta?
- Cómo agregar dos elementos de matriz usando punteros
- ¿Es la incapacidad de implementar estructuras de datos básicas como una lista doblemente enlazada, un árbol con punteros primarios usando un código seguro la mayor debilidad de Rust?
f (n) = n * f (n – 1)
si reemplazamos n con m = n – 1, veríamos que
f (n) = f (m + 1) = (m + 1) * f (m)
Ahora suponga que desea calcular f (5)
Hay 5 objetos que puede elegir para ser el primero, por lo que el número de posibles pedidos es
f (5) = 5 * f (4)
Hay cuatro objetos posibles para elegir como el primero del conjunto restante, por lo que
f (4) = 4 * f (3)
f (3) = 3 * f (2)
f (2) = 2 * f (1)
Solo hay 1 forma de ordenar 1 objeto, entonces f (1) = 1 (ese es el caso base)
Ahora sustituya este valor y vuelva a subir utilizando la relación de recursión
f (n + 1) = (n + 1) * f (n)
f (2) = 2 * f (1) = 2 * 1 = 2
f (3) = 3 * f (2) = 3 * 2 = 6
f (4) = 4 * f (3) = 4 * 6 = 24
f (5) = 5 * 24 = 120
La función f (n) normalmente se designa como n!
Eso es recursividad! (recurra a su camino hacia el caso base (reduce cada problema a un problema “más simple”), luego repita su camino de regreso a donde comenzó).