
Fernando Daniel Burgos
PreguntaEn que situaciones es mas conveniente usar funciones recursivas y en que otras usar bucle while?

Juan Cumbe
Muy buen aporte @criSTEM!
Un símil que me ha ayudado a comprender la diferencia entre bucle while y funciones recursivas es el siguiente:
Bucle WHILE: "Una puerta que te lleva al mismo sitio en el que estás, y así seguirá hasta que la condición deje cumplirse o no cumplirse"
Funciones RECURSIVAS: "Muñecas rusas, en la que cada una de las que hay en el interior representa un nivel inferior y necesita de la primera para poder existir"

Cristian Antonio García González
Hola @fernandodanielburgos.
Bueno primero diferenciemos los bucles while y las funciones recursivas:
Los bucles son en gran medida no recursivos. De hecho, son el principal ejemplo del mecanismo opuesto : iteración .
El punto de recursión es que un elemento del procesamiento de llamadas es otra instancia de sí mismo. La maquinaria de control de bucle simplemente salta de vuelta al punto donde comenzó.
Saltar en el código y llamar a otro bloque de código son operaciones diferentes. Por ejemplo, cuando salta al inicio del bucle, la variable de control del bucle todavía tiene el mismo valor que tenía antes del salto. Pero si llama a otra instancia de la rutina en la que está, entonces la nueva instancia tiene copias nuevas, no relacionadas de todas sus variables. Efectivamente, una variable puede tener un valor en el primer nivel de procesamiento y otro valor en un nivel inferior.
Esta capacidad es crucial para que funcionen muchos algoritmos recursivos, y esta es la razón por la que no puede emular la recursión a través de la iteración sin administrar también una pila de marcos llamados que realiza un seguimiento de todos esos valores.
Con esta descripción podemos concluir que si solo tenemos que repetir algo con la misma información sin ninguna modificación lo mejor es usar un bucle while en caso contrario que tengamos que utilizar una función que cada vez sea llamado ejecute con la información recopilada de la anterior ejecución o la llamada de otras instancia es mejor usar una función recursiva.
Te pongo unos ejemplo si hicieras un juego en el cual el jugador decide entre dos opciones seguir jugando o parar, si siempre elige el seguir jugando la condición sera verdadera y se repetirá el bucle pero no cambia nada con respecto a que hace el bucle, hasta que diga parar y termina el bucle, como se puede ver mas visualmente en la siguiente imagen.
Ahora en caso de una función recursiva tenemos el ejemplo de los factoriales en que 5! es el resultado de 5x4! = 120; 5x4x3! = 120; 5x4x3x2! = 120; 5x4x3x2x1! = 120; como vemos se llama a otro factorial hasta llegar al 1 y con cada paso usamos la información del paso anterior, aquí una imagen para una mejor visualización del ejemplo.
Espero que te haya sido de utilidad mi aporte y suerte en tus estudios.