Lunes 23 de Diciembre de 2024, 08:43
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Pascal
»
Ayuda Con La Recursividad
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Ayuda Con La Recursividad (Leído 4579 veces)
Mr. Pascal
Nuevo Miembro
Mensajes: 21
Ayuda Con La Recursividad
«
en:
Jueves 26 de Octubre de 2006, 18:46 »
0
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.
Tweet
Mollense
Miembro de PLATA
Mensajes: 1755
Nacionalidad:
Re: Ayuda Con La Recursividad
«
Respuesta #1 en:
Jueves 26 de Octubre de 2006, 19:02 »
0
Buscando en google y el primer link que me trajo
...
... apareció esto;
Ejemplo de recursividad
"Google", que buen buscador, no?
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."
...no te quedes mirando.
lencho
Miembro de PLATA
Mensajes: 1076
Re: Ayuda Con La Recursividad
«
Respuesta #2 en:
Jueves 26 de Octubre de 2006, 22:12 »
0
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.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"
lencho
Miembro de PLATA
Mensajes: 1076
Re: Ayuda Con La Recursividad
«
Respuesta #3 en:
Jueves 26 de Octubre de 2006, 22:15 »
0
Ah, disculpa.
Mi ejemplo esta echo en C++, pero la logica es igual.
BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"
Mr. Pascal
Nuevo Miembro
Mensajes: 21
Re: Ayuda Con La Recursividad
«
Respuesta #4 en:
Sábado 28 de Octubre de 2006, 06:29 »
0
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 frase
begin
if i >= 1 then
begin
write(fr[i]);
impinv(i-1, fr)
end;
end;
Si alguien tiene una variante de cualquiera de ellos me gustaria verla para estudiarla y asi aprender mas.
Sigo trabajando en la Recursividad... y agradesco la ayuda brindada por los dos caballeros...
lencho
Miembro de PLATA
Mensajes: 1076
Re: Ayuda Con La Recursividad
«
Respuesta #5 en:
Sábado 28 de Octubre de 2006, 15:03 »
0
tu codigo no esta bien explicau.
No se sabe si quisiste hacer
Contar la cantidad de numeros pares en un vector
o
Sumar todos los digitos pares de un vector
.
pero weno, sigue practicando.
aqui esta el
Sumar todos los digitos pares de un vector
en Visual Basic.
Código: Text
Private Function SumaPares(ByVal vec() As Integer, ByVal j As Integer) As Integer
Dim suma As Integer
If j = 0 Then
If (vec(j) Mod 2 = 0) Then
suma = vec(j)
Else
suma = 0
End If
Else
suma = SumaPares(vec, j - 1)
If (vec(j) Mod 2 = 0) Then
suma = suma + vec(j)
Else
suma = suma
End If
End If
Return suma
End Function
BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"
lencho
Miembro de PLATA
Mensajes: 1076
Re: Ayuda Con La Recursividad
«
Respuesta #6 en:
Sábado 28 de Octubre de 2006, 15:12 »
0
la logica es la siguiente.
por el caso base.
, me llega un vector con una sola casilla, verifico si es par devulevo el mismo dato, si no devuelvo 0.
por ELSE,
llamo a la funcion recursiva pero enviandole DIMENSION -1 , para que no tome en cuenta la ultima casilla. Cuando termine yo verifico la ultima casilla. Si es par le sumo a lo que me devolvio la funcion recursiva y si no devuevlo lo que me devolvieron a mi.
Espero y te sirva.
BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"
Mr. Pascal
Nuevo Miembro
Mensajes: 21
Re: Ayuda Con La Recursividad
«
Respuesta #7 en:
Sábado 28 de Octubre de 2006, 18:23 »
0
Es cierto Lencho ahora que lo veo bien no esta bien explicado, pero lo funcion lo que hace es contabilizar la cantidad de numeros pares que hay en un vector (array)
explicacion:
La funcion recibe como parametros a la variable
c
que es un contandor inicializado en 0 en el programa principal y tambien recibe a la variable
i
que es el indice del vector (array) y entra en la funcion con el tamaño del vector. (por ejemplo si el vector tiene 5 casillas
i
entraria con 5).
Ahora por que escogi
if i=0 then
cont:= c por que al ir comparando si el numero que esta en el vector es impar va ir decrementando
i
y cada comparacion la va almacenando en el stack de pascal y el elemento cima del stack seria cont(
c
, 0), donde
c
seria la cantidad de impares total.
dejo el programa adjunto para que lo vean
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Pascal
»
Ayuda Con La Recursividad