Programación General > Pascal

 Ayuda Con La Recursividad

(1/2) > >>

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&#59;      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 &#60;&#62; 0 then           cont:= cont(c+1, i-1)      else            cont:=cont(c, i-1);end;   

--- Código: Text --- procedure impinv(i:integer; fr:str); &#60;--i entra con la longitud de la frasebegin    if i &#62;= 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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa