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.