¿Es correcto decir que dondequiera que se use la recursividad, se podría usar un bucle for?
Sí, porque la recursividad en la mayoría de las CPU se modela con bucles y una estructura de datos de pila.
Y si la recursividad suele ser más lenta, ¿cuál es la razón técnica para usarla?
No es "normalmente más lento": es la recursividad que se aplica incorrectamente lo que es más lento. Además de eso, los compiladores modernos son buenos para convertir algunas recursiones en bucles sin siquiera preguntar.
Y si siempre es posible convertir una recursividad en un bucle for, ¿existe una regla general para hacerlo?
Escriba programas iterativos para algoritmos que se comprendan mejor cuando se explican de manera iterativa; escribir programas recursivos para algoritmos que se expliquen mejor de forma recursiva.
Por ejemplo, la búsqueda de árboles binarios, la ejecución de ordenación rápida y el análisis de expresiones en muchos lenguajes de programación a menudo se explica de forma recursiva. Estos también se codifican mejor de forma recursiva. Por otro lado, calcular factoriales y calcular números de Fibonacci es mucho más fácil de explicar en términos de iteraciones. Usar la recursividad para ellos es como aplastar moscas con un mazo: no es una buena idea, incluso cuando el mazo hace un buen trabajo + .
+ Tomé prestada la analogía del mazo de "Disciplina de programación" de Dijkstra.
recursion
vsiteration
?iteration = for loop
Yo creo que.