Ejercicios
15.7
¿Qué hace el siguiente código?
1
public int
misterio(
int
a,
int
b )
2
{
3
if
( b ==
1
)
4
return
a;
5
else
6
return
a + misterio( a, b –
1
);
7
}
// fin del método misterio
15.8
Busque el(los) error(es) en el siguiente método recursivo, y explique cómo corregirlo(s). Este método debe
encontrar la suma de los valores de 0 a
n
.
1
public int
suma(
int
n )
2
{
3
if
( n ==
0
)
4
return
0
;
5
else
6
return
n + suma( n );
7
}
// fin del método suma
15.9
(Método
potencia
recursivo) Escriba un método recursivo llamado
potencia(base,exponente)
que, cuan-
do sea llamado, devuelva
base
exponente
Por ejemplo,
potencia(3,4)=3
*
3
*
3
*
3
. Suponga que
exponente
es un entero mayor o igual que
1
. [
Sugerencia:
el paso recursivo debe utilizar la relación
base
exponente
=
base· base
exponente - 1
y la condición de terminación ocurre cuando
exponente
es igual a
1
, ya que
base
1
=
base
Incorpore este método en un programa que permita al usuario introducir la
base
y el
exponente
].
15.10
(Visualización de la recursividad) Es interesante observar la recursividad “en acción”. Modifi que el método fac-
torial de la fi gura 15.3 para imprimir su variable local y su parámetro de llamada recursiva. Para cada llamada recursiva,
muestre los resultados en una línea separada y agregue un nivel de sangría. Haga su máximo esfuerzo por hacer que los
resultados sean claros, interesantes y signifi cativos. Su meta aquí es diseñar e implementar un formato de salida que
facilite la comprensión de la recursividad. Tal vez desee agregar ciertas capacidades de visualización a otros ejemplos y
ejercicios recursivos a lo largo de este libro.
15.11
(Máximo común divisor) El máximo común divisor de los enteros
x
y
y
es el entero más grande que se puede
dividir entre
x
y
y
de manera uniforme. Escriba un método recursivo llamado
mcd
, que devuelva el máximo común di-
visor de
x
y
y
. El
mcd
de
x
y
y
se defi ne, mediante la recursividad, de la siguiente manera: si
y
es igual a
0
, entonces
mcd
(
x,
y
) es
x
; en caso contrario,
mcd(
x,
y
) es
mcd(
y,
x
%
y
), en donde
%
es el operador residuo. Use este método
para sustituir el que escribió en la aplicación del ejercicio 6.27.
15.12
¿Qué hace el siguiente programa?
1
// Ejercicio 15.12 Solución: ClaseMisteriosa.java
2
3
public class
ClaseMisteriosa
4
{
5
public int
misterio(
int
arreglo2[],
int
tamanio )
6
{
7
if
( tamanio ==
1
)
8
return
arreglo2[
0
];
Ejercicios
681
15_MAQ_CAP_15_DEITEL.indd681
4/19/081:29:08AM