Java: Problemas de recursividad con solución

shell-2172686_1920.jpg

He estado viendo el tema de la recursividad  y como aplicarlo en la programación, dejare algunos ejercicios ya resueltos aplicando la recursividad con Java.

  • Crea un programa donde se pida en el principal la tabla de multiplicar deseada, en un método recursivo generar la tabla de multiplicar. Se multiplicara hasta querer llegar al numero 12 como resultado. El formato de salida es el siguiente:
    5 x 1 = 5
    5 x 2 = 10
import java.util.Scanner;

public class Main {

	@SuppressWarnings({ "resource" })
	public static void main(String[] args) {

		Scanner reading = new Scanner(System.in);
		int num=0;

		System.out.print("Pida la tabla de multiplicar: ");
		num=reading.nextInt();
		tableMultiplication(num,10);

	}

    public static void tableMultiplication(int TABLE, int LENGTH){

    	if (LENGTH>1) {
    		tableMultiplication(TABLE,LENGTH-1);
    	}

    	if ((TABLE*LENGTH)<=12) {

    		System.out.printf("%d x %d = %d \n",TABLE,LENGTH,(TABLE*LENGTH));
    	}
    }

}
  • Crea un programa donde ingreses 10 nombres de ciudades, y en un método recursivo muestra las ciudades al reves (es decir del ultimo al primero)
import java.util.Scanner;

public class Main {

	static String country[] = new String[10];

	public static void main(String[] args) {

		@SuppressWarnings("resource")
		Scanner reading = new Scanner(System.in);

		for (int i = 0; i < country.length; i++) {

			System.out.printf("Ingrese el nombre de la ciudad #%d: ",(i+1));
			country[i]=reading.nextLine();
		}

		//Llamada al metodo recursivo
		System.out.println("\n");
		outputCountry(country.length-1);
	}

	public static void outputCountry(int LENGTH) {

		if(LENGTH==0) { //Termina cuando country[] llegue a la posicion 0 

			System.out.printf("Ciudad #%d : %s  \n",(LENGTH+1),country[LENGTH].toUpperCase());

		}else {

			System.out.printf("Ciudad #%d : %s \t*\n",(LENGTH+1),country[LENGTH].toUpperCase());
			outputCountry(LENGTH-1);
		}

	}

}

  • Crea un programa donde ingreses en un método recursivo la captura de numeros, esto son almacenados en un arreglo, la recursividad termina cuando el usuario ingrese el numero -1, al termino del mismo, muestra los valores capturados en el mismo método
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

	static Scanner reading = new Scanner(System.in);
	static ArrayList number = new ArrayList();
	static boolean flag=true;
	static int count=0;

	public static void main(String[] args) {

		captureNumbers();

	}

	public static void captureNumbers() {

		int value=0;

		if(flag) {

			System.out.print("Ingrese un numero: ");
			value=reading.nextInt();

			if(value==-1) {

				//Temina de capturar datos en el Array
				flag=false;
				System.out.println("\n[VALORES CAPTURADOS]\n");
				captureNumbers();

			}else {

				//Se agrega el numero capturado al ArrayList
				number.add(value);

				//Se vuelve a llamar a si mismo la funcion
				captureNumbers();
			}

		}else {

			if(count==number.size()) {

				//Test
				System.out.println("\n [ Termino ] ");
				System.out.println("El contador es: "+count);
				System.out.println("El arreglo es: "+number.size());

			}else {

				//System.out.println("\n[VALORES CAPTURADOS]\n");
				System.out.println("Numero #"+count+" = "+number.get(count));
				count++;
				captureNumbers();

			}
		}

	}
}

  • Crea un programa donde se pida el nombre de una persona en el principal y en un método recursivo mostrarlo de forma inversa.
import java.util.Scanner;

public class Main {

	static char[] charName=null;

	public static void main(String[] args) {

		@SuppressWarnings("resource")
		Scanner reading = new Scanner(System.in);

		System.out.print("Ingrese su nombre: ");
		String name = reading.nextLine();
		charName = name.toCharArray();

		System.out.println("\n[ NOMBRE AL REVES ]");
		nameReverse(charName.length-1);

	}

	public static void nameReverse(int LENGTH) {

		if(LENGTH==0) {

			System.out.print(charName[LENGTH]+".");

		}else {

			System.out.print(charName[LENGTH]);
			nameReverse(LENGTH-1);
		}

	}

}

  • Crear un programa utilizando la recursividad para obtener la suma total de números, estos son almacenados en un acumulador, mostrar la suma total cuando el usuario capture el valor de 0.
import java.util.Scanner;

public class Main {

	static Scanner reading = new Scanner(System.in);

	public static void main(String[] args) {

		int accumulator=0;
		int count=1;
		captureRecursive(accumulator, count);

	}

	public static void captureRecursive(int ACCUMULATOR, int COUNT) {

		System.out.printf("Ingrese el #%d : ",COUNT);
		int num=reading.nextInt();

		if(num==0) {

			System.out.println("\nSe ingreso cero\n"
					+ "Suma total: "+ACCUMULATOR+"\n"
							+ "Fin!.");

		}else {

			ACCUMULATOR+=num;
			captureRecursive(ACCUMULATOR,COUNT+1);
		}

	}

}
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s