Pascal/Turbo Pascal - Potencia (manera recursiva)

 
Vista:
sin imagen de perfil

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;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Potencia (manera recursiva)

Publicado por David (224 intervenciones) el 19/11/2014 13:53:36
Te propongo la siguiente solución:

Uses CRT;

var
b, e,r : Integer;


function potenciarecursiva(M:integer ; N:integer):integer;
begin
if (n=0) then
potenciarecursiva:=1
else
potenciarecursiva:=m * potenciarecursiva (m, n-1)
end;

begin
clrscr;
writeln('Base: '); readln(b);
writeln('Exponente: '); readln(e);
r:= potenciarecursiva(b,e);
Writeln(b,' elevado a ',e,' es : ',r);
readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Potencia (manera recursiva)

Publicado por facundoBoss (3 intervenciones) el 19/11/2014 14:28:28
Eso está bien, pero me exigen que use esa teoría, de la manera que tu dices no se usa :S , la que me has dicho sabía hacerla, la difícil es usando la teoría, no se me ocurre nada, pero gracias de todas formas :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Potencia (manera recursiva)

Publicado por David (224 intervenciones) el 19/11/2014 19:38:40
¿A qué te refieres con teoría? Según tu enunciado te pide que uses recursividad, que es lo que yo he puesto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Potencia (manera recursiva)

Publicado por facundoBoss (3 intervenciones) el 19/11/2014 20:09:08
Sólo puedes utilizar esto para resolver el ejercicio:

x^0=1
x^n=(x*x)^n/2 si n es mayor que cero y es par
x^n=x*(x^n-1) si n es mayor que cero y es impar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Potencia (manera recursiva)

Publicado por Ricardo (4 intervenciones) el 21/11/2014 03:25:39
1
2
3
4
5
6
7
8
9
Function PotenciaRecursiva(m,n:Integer):Integer;
Begin
	if (n=0) then
		PotenciaRecursiva:=1
	else if (m mod 2=0) then
		PotenciaRecursiva:=PotenciaRecursiva(m*m,n div 2)
	else
		PotenciaRecursiva:=m*PotenciaRecursiva(m,n-1);
End;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar