Sunteți pe pagina 1din 2

Facultad de Ingeniera de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy - ArgentinaTel: 54-88-221577 Fax: 54-88-221579

Introduccin a la Informtica http://www.fi.unju.edu.ar/materias/materia/IIII/ pg. - 1 -


INTRODUCCIN A LA
INFORMTICA

FACULTAD DE INGENIERA
UNIVERSIDAD NACIONAL DE
JUJUY

PROCEDIMIENTOS Y FUNCIONES RECURSIVAS BSICAS
Pseudocdigo Pascal
funcion FactRec (N): entero
[entero: N parmetro por valor]
inicio
si N = 0
entonces
FactRec 1
sino
FactRec N * FactRec (N-1)
finsi
fin [FactRec]

function FactRec (N: integer): integer;
begin
if N = 0
then
FactRec := 1
else
FactRec := N * FactRec (N-1);
end; {FactRec}

funcion FiboRec (F): entero
[entero: F parmetro por valor]
inicio
si F = 1 O F = 2
entonces
FiboRec 1
sino
FiboRec FiboRec (F-2) + FiboRec (F-1)
finsi
fin [FiboRec]

function FiboRec (F: integer): integer;
begin
if (F = 1) Or (F = 2)
then
FiboRec := 1
else
FiboRec := FiboRec (F-2) + FiboRec (F-1);
end; {FiboRec}

Procedimiento Reves (X)
[entero: X parmetro por valor]
inicio
si X < 10
entonces
Escribir X
sino
Escribir Resto (X, 10)
Reves (X/10)
finsi
fin [Reves]

Procedure Reves (X: integer);
begin
if X < 10
then
write (X)
else
begin
write (Resto (X, 10));
Reves (X div10);
end;
end; {Reves}
Procedimiento Bin (W)
[entero: W parmetro por valor]
inicio
si W < 2
entonces
Escribir W
sino
Bin (W/2)
Escribir Resto (W, 2)
finsi
fin [Bin]

Procedure Bin (W: integer);
begin
if W < 2
then
write (W)
else
begin
Bin (W div 2);
write (Resto (W, 2));
end;
end; {Bin}
funcion SumaRecVec (V, N): Tipo de dato vector
[tvector: V parmetro por valor]
[entero: N parmetro por valor]
inicio
si N = 1
entonces
SumaRecVec V(1)
sino
SumaRecVec V(N) + SumaRecVec (V, N-1)
finsi
fin [SumaRecVec]

function SumaRecVec (V:tvector; N:integer): Tipo de dato vector;
begin
if N = 1
then
SumaRecVec := V[1]
else
SumaRecVec := V[N] + SumaRecVec (V, N-1);
end; {SumaRecVec}





Facultad de Ingeniera de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy - ArgentinaTel: 54-88-221577 Fax: 54-88-221579
Introduccin a la Informtica http://www.fi.unju.edu.ar/materias/materia/IIII/ pg. - 2 -
INTRODUCCIN A LA
INFORMTICA

FACULTAD DE INGENIERA
UNIVERSIDAD NACIONAL DE
JUJUY

PROCEDIMIENTOS Y FUNCIONES RECURSIVAS BSICAS
program Recursivos;
uses
crt;
type
tvector=array[1..50] of integer;
var
A:tvector;
N, X, Op:integer;

procedure Menu(var op:integer);
begin
writeln ('********* MENU RECURSIVOS *********');
writeln ('* 1. Cargar Vector *');
writeln ('* 2. Leer X *');
writeln ('* 3. Mostrar suma datos vector *');
writeln ('* 4. Mostrar X al reves *');
writeln ('* 5. Mostrar equiv. Binario X *');
writeln ('* 6. Mostrar termino X Fibonacci *');
writeln ('* 7. Mostrar factorial de X *');
writeln ('* 9. Salir *');
writeln ('* Elija una opcin *');
writeln ('**************************************');
write ('Elija----->');
readln(op);
end; {Menu}

procedure Cargar(var X:tvector;var B:integer);
var
i:integer;
begin
write('ingrese cantidad datos = ');
readln(B);
for i:=1 to B do
begin
write('ingrese Dato[',i,'] = ');
readln(X[i]);
end;
end;

function FactRec (N: integer): real;
begin
if N = 0
then
FactRec := 1
else
FactRec := N * FactRec (N-1);
end; {FactRec}

function FiboRec (F: integer):real;
begin
if (F=1) OR (F=2)
then
FiboRec := 1
else
FiboRec := FiboRec (F-2) + FiboRec (F-1);
end; {FiboRec}

function Resto (Ddo,Dsor: integer): integer;
var
R:integer;
begin
R := Ddo - Ddo div Dsor * Dsor;
Resto:= R;
end; {Resto}

Procedure Reves (X: integer);
begin
if X < 10
then
write (X)
else
begin
write (Resto (X, 10));
Reves (X div 10);
end;
end; {Reves}

Procedure Bin (W: integer);
begin
if W < 2
then
write (W)
else
begin
Bin (W div 2);
write (Resto (W, 2));
end;
end; {Bin}

function SumaRecVec (V:tvector; N:integer): integer;
begin
if N = 1
then
SumaRecVec := V[1]
else
SumaRecVec := V[N] + SumaRecVec(V, N-1);
end; {SumaRecVec}

begin
repeat
clrscr;
Menu(Op);
case Op of
1: Cargar(A,N);
2: begin
write('Ingrese valor de X = ');
readln(X);
end;
3: writeln ('Suma datos del vector = ',SumaRecVec(A,N));
4: Reves (X);
5: Bin (X);
6: writeln ('Fibonacci = ', FiboRec(X));
7: writeln ('Factorial = ', FactRec(X));
9: writeln ('Nos vemos...');
else
writeln ('mala eleccion!');
end;
write('Presione Enter para continuar...');
readln;
Until op = 9;
end.

S-ar putea să vă placă și