[C con Clase] recursividad

Salvador Pozo salvapozo en gmail.com
Lun Mar 14 00:06:25 CET 2016


El pasado 2016-03-13 18:16:36, yolmer escribió:
 
y> Hola lista:
y> me topé con un ejercicio de recursividad que no he logrado realizar de la
y> forma que quiero el enunciado es:

Hola:

Te comento sobre tu propuesta.

y> int voltea( char *c)

Piensa que para poder usar recursividad, la función debería retornar un objeto del mismo tipo que el parámetro, en este caso, una cadena. El parámetro puede ser (y debería) una cadena constante, pero el valor de retorno no tiene por qué.

y> {
y> if (strlen(c) > 1)
y> {
y> voltea(c+1);
y> cout << c[0] << " ";

Um, la idea es que la función devuelva la cadena al revés, no que la muestre en pantalla.
La forma recursiva de voltear una cadena es, dividir la cadena en dos:
- Una cadena de un carácter, formada por el primer carácter de la cadena a voltear.
- Una cadena con el resto, que se usará como argumento recursivo.
El retorno de "Voltear(cadena2)" se debe concatenar con cadena1.

y> return 0;
y> }

y> cout <<  c << " ";
y> return 0;
y> }

El segundo intento va mejor encaminado, pero te queda corregir algunas cosillas.
Por ejemplo voltea(c+1) no tiene sentido, no se puede sumar 1 a una cadena.
Otro error es que concatenar c, y &c[0] concatena dos veces la cadena c, no la voltea de ninguna forma.

Piensa un poco más, creo que estás cerca de la solución, y me consta que preferirías encontrala por ti mismo. ¡Ánimo!

Hasta pronto.


Más información sobre la lista de distribución Cconclase