Sie sind auf Seite 1von 3

1.

Suma de los números naturales hasta n

Se crea una variable de tipo entero con el número que se va a sumar de manera recursiva, luego
se almacena el resultado de la función en una variable de tipo entero y se imprime el resultado.

La función pública para acceso de ella en otros métodos, estática y que retorna un tipo de dato
entero realiza el siguiente proceso: declara una variable de tipo entero que va almacenar el
resultado de la operación, luego se pregunta si el parámetro de la variable es igual a 1 entonces el
retorna 1 y finaliza la recursión debido a que el número no va a disminuir más, de lo contrario se
va a volver a llamar la función dentro de la variable declarada anteriormente para el resultado y en
los parámetros se va a ir descontando de uno en uno al parámetro inicial de la función una vez
finalizada la condición se retorna el resultado.
package ejercicio_recursividad_1;

public class Ejercicio_recursividad_1 {

public static void main(String[] args) {

int n = 10;

//guardamos el resultado en una variable


int resultado = sumaRecursiva(n);

//Mostramos el resultado
System.out.println(resultado);

public static int sumaRecursiva(int numero){

int res;

if(numero == 1) {
//Se termina la recursion
return 1;
}else{
//Se llama a si misma la función con el parametro numero menos 1
res = numero + sumaRecursiva(numero - 1);
}

//Devuelve el resultado
return res;
}

}
2. Haz una función que obtenga el máximo número de un array, pasándole el array, el índice
y el número máximo actual.

Se crea un array de enteros con una cantidad de números, luego se imprime el resultado de la
función enviando como parámetro el array, el índice y el número máximo actual,

En la función publica estática que retorna un dato de tipo entero y recibe como parámetros un
array de enteros, y dos enteros más primero se pregunta si el índice es diferente que el tamaño de
la longitud del array, de ser así entonces vuelve y pregunta si el número en la posición del índice es
mayor que el parámetro de número máximo, si es verdadera la condición entonces el parámetro
de máximo toma como valor el resultado de la misma función pero en los parámetros se va a
incrementar un número más al índice y al número máximo se va enviar el array en la posición del
índice en parámetro de la función original, de lo contrario se retornan los mismos parámetros con
el índice incrementado pero va a ser el mismo número máximo de la función original, luego de que
haga sus cálculos va a retornar el máximo del array.

De la misma manera se va hacer la función del mínimo solo que en la condición inicial se compara
si es menor que el parámetro de mínimo
package ejercicio_recursividad_11;

public class Ejercicio_recursividad_11 {

public static void main(String[] args) {

int[] numeros = {6, 5, -9999, 10, 2, -10, 6};

System.out.println("Maximo v1: " + maximoRec(numeros, 0,


numeros[0]));

System.out.println("Minimo v1: " + minimoRec(numeros, 0,


numeros[0]));

public static int maximoRec(int[] numeros, int indice, int max) {

if (indice != numeros.length) {

if (numeros[indice] > max) {


max = maximoRec(numeros, indice + 1, numeros[indice]);
} else {
max = maximoRec(numeros, indice + 1, max);
}

return max;

public static int minimoRec(int[] numeros, int indice, int min) {

if (indice != numeros.length) {
if (numeros[indice] < min) {
min = minimoRec(numeros, indice + 1, numeros[indice]);
} else {
min = minimoRec(numeros, indice + 1, min);
}
}

return min;
}
}

3. Suma los dígitos de un número de forma recursiva.

Primero se declara una variable de tipo entero que va almacenar el número, luego se imprime el
resultado de la función que va a sumar los dígitos del número enviando como parámetro el mismo
número.

En la función que recibe como parámetro un tipo de dato entero, luego se pregunta si número
recibido como parámetro es menor que 10 entonces se devuelve el mismo número como
resultado, de lo contrario se retorna la división del número sumado al resultado de la misma
función que envía como parámetro el numero pero se divide en 10
package ejercicio_recursividad_10;

public class Ejercicio_recursividad_10 {


public static void main(String[] args) {
int numero = 123;
System.out.println(sumaDigitos(numero));
}

public static int sumaDigitos(int numero){


if(numero < 10){ //caso base
return numero; //devuelvo el numero
}
else{
return (numero % 10) + sumaDigitos(numero/10);
//Cojo el digito y llamo a la funcion
}
}
}

Das könnte Ihnen auch gefallen