domingo, 5 de septiembre de 2010

RECURSION: Potencia.c

Laboratorio de Lenguajes de Programación - Semana  4

CÓDIGO:
#include 

double potencia (int x, int y) {
double resultado;
if(y == 0)
  resultado = 1;
else
  resultado = x * potencia(x,y-1);
return resultado;
}

int main(void) {
int base=0, exponente=0;
printf("\t\tPROGRAMA PARA CALCULAR UNA POTENCIA\n\n");
printf("Dame el valor de la base -> ");
scanf("%d", &base);
printf("Dame el valor del exponente -> ");
scanf("%d", &exponente);
printf("%d elevado a %d es = %f", base, exponente, potencia(base, exponente));
return 0;
}


¿Cómo funciona el código?

Éste es el bloque recursivo:
double potencia (int x, int y) {
    double resultado;
        if(y == 0)
            resultado = 1;
        else
            resultado = x * potencia(x,y-1);
return resultado;
}


Variables tipo double para evitar algún desbordamiento. La función recibe 2 parametros:
int x = Base de la potencia
int y = Exponente de la potencia
Necesitamos otra variable double que será la que almacenara el resultado.
Es caso base es if (y==0)

Supongamos = 5^5 , entonces:



En este punto el caso base se cumple puesto que el exponente ( y ) es cero
double potencia (5, 0) {
  double resultado;
  0 == 0 (SE CUMPLE EL CASO BASE)
    REGRESA 1;

Ahora cada subrutina comenzara a resolverse con el valor la anterior le regresa y asi llegaremos al resultado



DESCARGA: Potencia.c

SALUDOS!! ^_^

1 comentario: