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