Programa en pascal recursividad.
Publicado por Asin (3 intervenciones) el 15/11/2015 08:04:00
Hola, me gustaría hacer en pascal un programa recursivo dado los siguientes datos:
POTENCIA RECURSIVA:
La potencia de un real elevado a un entero positivo se puede definir como:
CIFRA i-ESIMA RECURSIVA
Se define la cifra i-ésima de un número entero positivo n como:
La última si i=0
La cifra (i-1)-ésima de n DIV 10 si i>0
Por ejemplo, la cifra 0-ésima del número 1234, es el 4. La cifra 1-ésima del número
1234 es el 3,…
MAXIMO COMÚN DIVISOR RECURSIVO.
Se puede calcular el máximo común divisor mediante usando las siguientes propiedades
debidas a Nicómaco de Gersasa, también llamado método de las diferencias:
si a>b, entonces m.c.d.(a, b) = m.c.d.(a-b, b)
si a<b, entonces m.c.d.(a, b) = m.c.d.(a, b-a)
si a=b, entonces m.c.d.(a, b) = m.c.d.(b, a) = a = b
NUMERO DEFECTUOSO.
Un número es defectuoso si es estrictamente menor que la suma de sus divisores (sin
incluir dicho número).
Por ejemplo, el 12 es defectuoso, ya que 12 < 6 + 4 + 3 + 2 + 1
Pero el 10 no es defectuoso, ya que 10 > 5 + 2 + 1
Práctica:
Desarrollar un programa que muestre un menú al usuario para que pueda elegir entre las
siguientes opciones:
a) Potencia. Esta opción solicitará al usuario un número real y un número entero
positivo y llamará a un subprograma recursivo que devuelva la potencia del
número real elevado al número entero usando el método recursivo descrito en la
teoría. El programa principal escribirá el valor devuelto.
b) Cifra i-ésima. Esta opción solicitará un número entero positivo (n) y la posición
de la cifra que quiere extraer. Esa posición ha de ser válida (es decir, debe ser un
número comprendido entre 0 y el número de cifras de n menos uno). Llamará a
un subprograma recursivo que reciba estos dos números enteros y devuelva la
cifra correspondiente usando recursión. El programa principal mostrará dicha
cifra.
c) Máximo común divisor. Esta opción solicitará dos números enteros positivos y
llamará a un subprograma recursivo que reciba ambos números y devuelve el
m.c.d. de ellos usando el método arriba descrito.. El programa mostrará el
resultado.
2
d) Número defectuoso. Esta opción solicitará un número entero positivo y llamará
a un subprograma que reciba ese número y devuelva true si el número es
defectuoso y false en caso contrario. El programa mostrará el resultado. Para
facilitar los cálculos puede usar un subprograma recursivo que reciba un número
y devuelva la suma de sus cifras.
e) Terminar. Cuando el usuario solicite esta opción el programa finalizará.
El programa debe pedir opciones y realizar las tareas asignadas hasta que el usuario
escoja la opción e), momento en el cual el programa terminará.
POTENCIA RECURSIVA:
La potencia de un real elevado a un entero positivo se puede definir como:
CIFRA i-ESIMA RECURSIVA
Se define la cifra i-ésima de un número entero positivo n como:
La última si i=0
La cifra (i-1)-ésima de n DIV 10 si i>0
Por ejemplo, la cifra 0-ésima del número 1234, es el 4. La cifra 1-ésima del número
1234 es el 3,…
MAXIMO COMÚN DIVISOR RECURSIVO.
Se puede calcular el máximo común divisor mediante usando las siguientes propiedades
debidas a Nicómaco de Gersasa, también llamado método de las diferencias:
si a>b, entonces m.c.d.(a, b) = m.c.d.(a-b, b)
si a<b, entonces m.c.d.(a, b) = m.c.d.(a, b-a)
si a=b, entonces m.c.d.(a, b) = m.c.d.(b, a) = a = b
NUMERO DEFECTUOSO.
Un número es defectuoso si es estrictamente menor que la suma de sus divisores (sin
incluir dicho número).
Por ejemplo, el 12 es defectuoso, ya que 12 < 6 + 4 + 3 + 2 + 1
Pero el 10 no es defectuoso, ya que 10 > 5 + 2 + 1
Práctica:
Desarrollar un programa que muestre un menú al usuario para que pueda elegir entre las
siguientes opciones:
a) Potencia. Esta opción solicitará al usuario un número real y un número entero
positivo y llamará a un subprograma recursivo que devuelva la potencia del
número real elevado al número entero usando el método recursivo descrito en la
teoría. El programa principal escribirá el valor devuelto.
b) Cifra i-ésima. Esta opción solicitará un número entero positivo (n) y la posición
de la cifra que quiere extraer. Esa posición ha de ser válida (es decir, debe ser un
número comprendido entre 0 y el número de cifras de n menos uno). Llamará a
un subprograma recursivo que reciba estos dos números enteros y devuelva la
cifra correspondiente usando recursión. El programa principal mostrará dicha
cifra.
c) Máximo común divisor. Esta opción solicitará dos números enteros positivos y
llamará a un subprograma recursivo que reciba ambos números y devuelve el
m.c.d. de ellos usando el método arriba descrito.. El programa mostrará el
resultado.
2
d) Número defectuoso. Esta opción solicitará un número entero positivo y llamará
a un subprograma que reciba ese número y devuelva true si el número es
defectuoso y false en caso contrario. El programa mostrará el resultado. Para
facilitar los cálculos puede usar un subprograma recursivo que reciba un número
y devuelva la suma de sus cifras.
e) Terminar. Cuando el usuario solicite esta opción el programa finalizará.
El programa debe pedir opciones y realizar las tareas asignadas hasta que el usuario
escoja la opción e), momento en el cual el programa terminará.
Valora esta pregunta


0