Creo que la mejor manera de entender esta función es visualizarla como un gráfico:
Esta es una función recursiva que genera todas las permutaciones de sumar +5 o multiplicar * 3 al número anterior. Se detiene cuando encontramos 24.
Comenzamos en 1. Luego hacemos un primer recorrido profundo prefiriendo +5 sobre * 3, hasta encontrar 24.
- ¿Qué tan bueno es YUI como una biblioteca JavaScript de código abierto, en comparación con las alternativas actuales (2014)?
- ¿Por qué los desarrolladores web deberían aprender a usar WordPress?
- ¿La mayoría de los desarrolladores front-end usualmente solo crean páginas basadas en la simulación dada por el cliente? ¿Qué otros roles o responsabilidades tienen si son contratados como desarrolladores web front-end?
- Cómo aprender múltiples lenguajes de programación de computadoras y cuánto tiempo aproximado tomará dominar un idioma
- Cómo crear un diseño de diseño web que muestre publicaciones por categorías como un sitio web de noticias típico con WordPress
Para ver por qué esto es correcto, solo mira los casos en nuestra función recursiva:
- si estamos en nuestro número objetivo, pare y regrese el historial
- si estamos por encima de nuestro número objetivo, pare
- Si estamos por debajo de nuestro número objetivo, primero baje por la ruta +5. Si esto devuelve nulo, vaya por la ruta * 3. Esto es básicamente la profundidad primero.
Puede ver el script de Python que utilicé para generar el gráfico aquí findsequence.py.