Pascal/Turbo Pascal - Ayuda en Recursion

 
Vista:

Ayuda en Recursion

Publicado por vz (14 intervenciones) el 08/01/2004 06:26:25
saludos a todos, les excribo la siguiente inquietud.

me mandaron a realizar una funcion recursiva donde devuelva el numero de digitos de un entero, es decir si el numero es 45869 tiene 5 digitos.

E realisado el problema de forma normal(sin recursion) y me da bien, usando la funcion length que dice el numero de caracteres. E intentado hacer una subcadena que vaya corriendo el numero desde la primera posicion hasta que encuentre un espacio en blanco, pero nome sale, a ver si ust me ayudan

quiero saber tambien si en recursion se puede usar For, o solamente If.

Gracias!
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

RE:Ayuda en Recursion

Publicado por Diego Romero (786 intervenciones) el 08/01/2004 17:30:08
Pero sucede que la recursión se trata de que una función o procedimiento se llame a sí misma. El FOR es iterativo, no recursivo.

var
Cont: Integer;

procedure Contar(Cadena: string; var C:integer);
begin
if Cadena[C+1] in ['0'..'9'] then
begin
C:=C+1;
Contar(Cadena, C);
end;
end;

begin
Contar('45869', Cont);
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

RE:Ayuda en Recursion

Publicado por vz (14 intervenciones) el 08/01/2004 20:25:41
OK. diego ya me aclare, entonces se usa puro If en recursion...

Otra cosa, me piden la funcion recursiva no el procedimiento.. aqui te copio el codigo que e echo con lo que yo tenia y con lo que tu me mandaste....

No me da error de compilado, pero se sale el programa.... creo que hay que cambiar algo, o casi todo

program ejercicio1;
uses crt;
var
i,numero,cantidad:integer;
cadena: string;

function BUSQUEDA (cadena:string):integer;
var
i:integer;
begin
i:=i+1;
if cadena[i] in ['0'..'9'] then busqueda:=busqueda(cadena)
else busqueda:=0;

end;
begin
clrscr;
i:=0;
Write('Introduzca un numero para saber la cantidad de digitos que este tiene: ');
read(numero);
str(numero,cadena);
cantidad:=BUSQUEDA(cadena);
write(cantidad);
readkey;
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