Advertisement
Trollkemada

Untitled

Mar 24th, 2012
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. /*
  2. El principal problema que tenía tu código es que, a pesar de modificar i y j adecuadamente, cunado volvias a invocar a palindromo_recursivo, se ejecutaban las primeras líneas y se hacia i=0, j=strlen(...) con lo cual se perdía su valor.
  3. i y j deben ser por tanto parámetros de entrada de la función, y quedaría así:
  4.  
  5. (también he cambiado alguna tontería mas que he comentado)
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <string.h>
  10.  
  11. int palindromo_recursivo (char array_tratada [], int i, int j)
  12. {
  13.     if(j<=1) // El  == no contempla el caso de cadenas vacias. Estaria mejor 'if (j<i)' (basta recorrer medio array)
  14.     {
  15.        // No se si se puede 'return valor=1' (creo que sí) pero en cualquier caso está muy desaconsejado
  16.         return 1;
  17.     }
  18.  
  19.     else
  20.     {        
  21.         if(array_tratada[i]==array_tratada[j])
  22.         {
  23.             return palindromo_recursivo(array_tratada,i+1,j-1);
  24.         }
  25.         else
  26.         {  
  27.             return 0;// Deberías usar 0 en vez de 2 para denotar falso (ya que 0 se evaula como falso, y 2 se evalua como cierto)
  28.         }
  29.     }
  30. }
  31.  
  32.  
  33. int main() {
  34.     char cadena[] = "olo";
  35.     printf("Resultado: %d",palindromo_recursivo(cadena,0,strlen(cadena)-1));
  36.     getchar();  
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement