Potencia (manera recursiva)
Publicado por facundoBoss (3 intervenciones) el 19/11/2014 09:59:22
Buenas a todos, resulta que en un ejercicio de clase me piden que haga un subprograma en Pascal que averigüe la potencia, los datos de entrada son la base y el exponente, no consigo que me funcione del todo. Para hacer el subprograma me tengo que basar únicamente en esta teoría:
Solicitará al usuario un número real (base) y un número entero positivo (exponente).
x^0=1
x^n=(x*x)^n/2 si n es mayor que 0 y es par
x^n=x*(x^n-1) si n es mayor que cero y es impar
Llevo esto hecho, pero no funciona muy bien:
FUNCTION potencia(base:real;expo:integer):real;
BEGIN
IF (expo=0) THEN
potencia:=1
ELSE IF (expo>0) AND (expo MOD 2 = 0) THEN
BEGIN
expo:=expo DIV 2;
potencia:=(base*base)*potencia(base,expo);
END
ELSE IF (expo>0) AND (expo MOD 2 <> 0) THEN
BEGIN
expo:=expo-1;
potencia:=base*potencia(base,expo);
END;
END;
Solicitará al usuario un número real (base) y un número entero positivo (exponente).
x^0=1
x^n=(x*x)^n/2 si n es mayor que 0 y es par
x^n=x*(x^n-1) si n es mayor que cero y es impar
Llevo esto hecho, pero no funciona muy bien:
FUNCTION potencia(base:real;expo:integer):real;
BEGIN
IF (expo=0) THEN
potencia:=1
ELSE IF (expo>0) AND (expo MOD 2 = 0) THEN
BEGIN
expo:=expo DIV 2;
potencia:=(base*base)*potencia(base,expo);
END
ELSE IF (expo>0) AND (expo MOD 2 <> 0) THEN
BEGIN
expo:=expo-1;
potencia:=base*potencia(base,expo);
END;
END;
Valora esta pregunta
0