RECURSIVO.c



// FUNCIONES RECURSIVAS
#include <stdio.h>

int factorial(int k)
{
	if ( !k ) return 1;
	return k * factorial( k-1 );
}

// muestra la cadena car a car
void izq_der(char *cad)
{
	if ( !cad[0] ) return;
	printf("%c  ", cad[0]);
	izq_der( ++cad );
}

// muestra la cadena invertida
void der_izq(char *cad)
{
	if ( !cad[0] ) return;
	der_izq( ++cad );
	printf("%c  ", cad[0-1]);
}


// cuenta la longitud de la cadena
int longitud(char *cad)
{
	if ( !cad[0] ) return 1;
	return 1 + longitud( ++cad );
}
// muestra los últimos h caracteres
void ultimosN(char *cad, int x)
{
	if ( cad[0] == '\0' ) return;
	ultimosN(++cad, x);
	if ( longitud(cad) == x+1 ) izq_der(cad);
}

int main(int x, char **y)
{
	printf("el 4!= %d\n", factorial(4));
	izq_der("parangaricutirimicuaro");
	printf("\n");
	der_izq("parangaricutirimicuaro");
	printf("\n");
	ultimosN("parangaricutirimicuaro", 10);
	printf("\n");
}