Ver Mensaje Individual
  #45 (permalink)  
Antiguo 29/11/2014, 05:55
Pantaláimon
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 18 años, 4 meses
Puntos: 32
Respuesta: Petando la pila. Problemas y retos usando recursividad.

Usar una segunda función no es trampa. Pero ya te digo que no la uso. Como ya he dicho, no se trata de modificar la variable que pasas por parámetro, sino devolver uno nuevo en función de la otra.

Como aún no quiero poner mi resultado te doy un ejemplo distinto. Crear una función anadeX que dado un string, a cada caracter le preceda una 'x': "abcd" -> "xaxbxcxd".
Código C++:
Ver original
  1. std::string anadeX(const std::string& str) {
  2.     if (str.empty()) {
  3.         return std::string();
  4.     } else {
  5.         return std::string("x") + str[0] + anadeX(str.substr(1));
  6.     }
  7. }
  8.  
  9. int main (void) {
  10.     std::string arr[] = {
  11.         "",
  12.         "abcde",
  13.         "aab",
  14.         "abb",
  15.         "aa",
  16.         "bb",
  17.         "a",
  18.         "b",
  19.         "abccccfabaddeff"
  20.     };
  21.     int i;
  22.     for (i = 0; i < 9; ++i) {
  23.         std::cout << arr[i] << " -> " << anadeX(arr[i]) << std::endl;
  24.     }
  25.     return 0;
  26. }
¿Ves que no ocurre nada por usar const?

Otra cosa es que tus funciones no puedan aplicarse para ese prototipo de función con const porque usas métodos que modifican la cadena origen. Pero no te preocupes, permito los dos prototipos.

Un saludo.
__________________
github.com/xgbuils | npm/xgbuils