En realidad lo somos.
Comenzando con una división larga, que es un procedimiento propiamente recursivo. En algún momento, se nos enseña el factorial que es una definición clásica recursiva.
En algún momento durante K-12 también se nos enseña el principio de inducción y las pruebas por inducción, que son el equivalente lógico de la recursividad.
Otros lugares donde es probable que lo encuentres: establece la teoría y las definiciones de cosas como los números naturales.
- ¿Cuál es la mejor escuela privada en Arizona?
- ¿Cuáles son algunos aspectos del trabajo de un maestro de educación especial que sorprenderían a alguien que no trabaja en el campo?
- ¿Debería prohibirse el WiFi en las escuelas debido a problemas de seguridad?
- ¿Cuáles son los 10 distritos escolares públicos de peor desempeño en los Estados Unidos?
- ¿Las escuelas autónomas están perjudicando a los distritos escolares públicos o los están presionando para que sean más eficientes e innovadores?
Entonces, aunque las matemáticas nos enseñan la recursión, desafortunadamente, son las clases de programación las que la arruinan. La recursividad se enseña como un acto antinatural en la mayoría de los cursos de programación para principiantes porque la mayoría de las clases de programación para principiantes se imparten en idiomas imperativos que tienen un apoyo terrible para la recursión y los maestros desalientan activamente su uso.
Otro culpable de esto son los algoritmos y los cursos de estructuras de datos. Estos cursos enseñan el diseño y análisis de algoritmos utilizando modelos de programación imperativos. Esto generalmente lleva a un pensamiento atrofiado. Como resultado, los estudiantes son completamente incapaces de diseñar algoritmos de forma recursiva, y mucho menos implementarlos.
Es solo cuando los estudiantes encuentran idiomas que apoyan la recursividad (Scheme, Lisp, Haskell y similares), que realmente pueden comenzar a apreciar la claridad de pensamiento que ofrece y su poder expresivo. Para muchos estudiantes, sin embargo, generalmente es demasiado tarde.
Si bien hay intentos en los departamentos de CS para cambiar esto, dichos departamentos son, lamentablemente, una minoría.