Ver Mensaje Individual
  #10 (permalink)  
Antiguo 17/11/2014, 17:27
kutcher
 
Fecha de Ingreso: noviembre-2014
Mensajes: 36
Antigüedad: 10 años
Puntos: 13
Respuesta: Petando la pila. Problemas y retos usando recursividad.

Cita:
Iniciado por eferion Ver Mensaje
El problema que tiene tu función es que, debido a las variables globales, es de un solo uso. Si la intentas usar más de una vez en la ejecución de un programa vas a tener problemas.

Tienes que intentar solucionar ese problema. Forma parte del reto ;)
Ya veo, modifique la función pero me he permitido agregar un parámetro mas a esta, espero que esto no sea un inconveniente :

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. char* diag(char* s, char* resultado, int i)
  6. {
  7.     if (*s)
  8.     {
  9.         int j = 0;
  10.         j = snprintf (resultado, i + 2, "%*c\n", i, *s);
  11.         diag (++s, resultado + j, ++i);
  12.     }
  13.     return resultado;
  14. }
  15.  
  16. int main (void)
  17. {
  18.     char cadena [] = "abcde";
  19.     int n = strlen(cadena);
  20.  
  21.     char* resultado = (char*)calloc(n * n + 1, sizeof(char));
  22.     resultado = diag(cadena, resultado, 1);
  23.     puts(resultado);
  24.  
  25.     free(resultado);
  26.     return 0;
  27. }

Saludos