La recursividad definitivamente tiene ventajas en los problemas de naturaleza recursiva. Otros carteles nombraron algunos de ellos.
Usar la capacidad de C para recursividad definitivamente tiene ventajas en la administración de la memoria. Cuando intenta evitar la recursión, la mayoría de las veces se usa una pila propia u otro tipo de datos dinámicos para resolver el problema. Esto implica la gestión de memoria dinámica en C/C++. ¡La gestión dinámica de la memoria es costosa y propensa a errores!
No se puede superar la pila
Por otro lado, cuando sólo tiene que utilizar la recursividad pila y su uso con las variables locales - la gestión de memoria es sólo simple y la pila es la mayoría del tiempo más eficiente en el tiempo que toda la administración de memoria que puede hacer usted mismo o con administración simple de memoria C/C++. La razón es que la pila del sistema es una estructura de datos simple y conveniente con poca sobrecarga y se implementa utilizando operaciones especiales del procesador que están optimizadas para este trabajo. Créanme, no se puede superar eso, ¡ya que los compiladores, los sistemas operativos y los procesadores están optimizados para manipulaciones de pila durante décadas!
PD: Además, la pila no se fragmenta, como la memoria de pila hace fácilmente. De esta manera, también es posible ahorrar memoria utilizando la pila/recursión.
Fuera de interés, ¿la respuesta a esta pregunta es diferente si tenemos en cuenta otros idiomas que permiten la recursión? –
Por supuesto. En lenguajes funcionales como Haskell, la recursividad se usa casi en cada lugar_. Sin embargo, esto se puede generalizar a más que solo C/C++, a menos que esté muy especialmente interesado en cómo se maneja la memoria en C/C++. –
Muchos engañados incluyen http: // stackoverflow.com/questions/2085834/how-did-you-practically-use-recursion –