RECURSIVO.c



// EJEMPLO DE RECURSIVIDAD

#include <stdio.h>
#include <conio.h>

int suma (int, int);
int resta(int, int);
int mult(int, int);
int divicion(int, int);

void main()
{
	int d1=20,d2=2;
	clrscr();
	printf("    suma = %d",suma(d1,d2));
	printf("\n   resta = %d",resta(d1,d2));
	printf("\nproducto = %d",mult(d1,d2));
	printf("\ncociente = %d",divicion(d1,d2));
	getch();
}
//                            T significa total
int suma(int a, int b)
{
	 if (!b) return a;
	 return suma(a,(b-1))+1;      // T(n) = T(n-1) + 1 para T = a + b
}

int resta(int a, int b)
{
	 if (!b) return a;
	 return resta(a,(b-1))-1;     // T(n) = T(n-1) - 1 para T = a - b
}

int mult(int a, int b)
{
	 if (!a) return 0;
	 if (!b) return 0;
	 return suma(a,mult(a,(b-1)));
}

int divicion(int a, int b)
{
	 if (!a) return 0;
	 return resta(resta(a,b), divicion(resta(a,b),b));
}