Programación General > Pascal
Ayuda Con La Recursividad
Mr. Pascal:
Bueno colegas programadores, estoy teniendo problemas con la recursividad, es decir, aun no logro comprenderla, se me hace un poco dificil encontral el estado base para empezar a trabajar en un ejercicio...
si alguno de uds. tuviera algunos manuales, ejemplos, o algo que me ayudara a desarrollar bien la recursividad se lo agradeceria.
Mollense:
Buscando en google y el primer link que me trajo :whistling: ...
... apareció esto;
Ejemplo de recursividad
"Google", que buen buscador, no? :devil:
:hola:
lencho:
para empezar el link que te paso Angel_K_ido esta excelente, con ese ejemplo puedes empezar muy bien.
Trata de convertir en forma recursiva todos tus programas que anteriormente hubieras echo, como por ejemplo:
CantidadDigitos(NUMERO: integer)
Suma_de_digitos(NUMERO: integer)
Suma_de_digitos_pares(NUMERO: integer)
Cant_de_digitos_pares(int NUMERO: integer)
.......
Eso para practicar.
Te ayudo con la primera
--- Código: Text --- byte TForm1::CantidadDigitos ( Cardinal num ){byte count; if (num < 10){ count = 1; } else { num = num / 10; count = CantidadDigitos (num); count++; } return count;}
Explicacion.
Por que escojo if (num < 10) , como caso base ??.
R. Por que si num es menor a 10 significa que esta entre 0..9, lo cual significa que tiene 1 digito.
Si tienes problemas, vuelve a preguntar.
Espero y te sirva.
BYTE.
lencho:
Ah, disculpa.
Mi ejemplo esta echo en C++, pero la logica es igual.
BYTE.
Mr. Pascal:
Muchas gracias por el link Angel_k_ido me ha servido de mucho...
ahora si estoy empezando a comprender un poco mas esto de la recursividad....
Y que buen consejo de pasar mis programas a recursivos Lencho, tienes razón asi voy practicando un poco mas...
les voy a enseñar los ejercicios que me dejaron hacer en la facultad.
1.-hacer una funcion recursiva que contabilice todos los numeros pares de un arreglo.
2.-hacer un procedimiento que visualice una frase de manera invertida.
Aqui estan los codes que hice por si a alguien le intereza.
ya estan corridos.
--- Código: Text --- function cont (c, i : integer): integer; begin if i = 0 then cont:= c else if num[i] mod 2 <> 0 then cont:= cont(c+1, i-1) else cont:=cont(c, i-1);end;
--- Código: Text --- procedure impinv(i:integer; fr:str); <--i entra con la longitud de la frasebegin if i >= 1 then begin write(fr[i]); impinv(i-1, fr) end;end;
:rolleyes: Si alguien tiene una variante de cualquiera de ellos me gustaria verla para estudiarla y asi aprender mas.
:comp: Sigo trabajando en la Recursividad... y agradesco la ayuda brindada por los dos caballeros... :hola:
Navegación
[#] Página Siguiente
Ir a la versión completa