1. Escriba una función recursiva que imprima en forma invertida los dígitos de un número entero.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejer1 {
public static void invertir(int num){
System.out.print(num%10);
if(num/10!=0){
invertir(num/10);
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int n;
System.out.println("Ingrese el numero a evaluar: ");
n=Integer.parseInt(br.readLine());
System.out.print("El numero invertido es: ");
invertir(n);
System.out.println();
}
}
2. Escriba una función recursiva que invierta una cadena de caracteres.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejer4 {
public static String invertir(String cad, int tama){
String c2="";
if(tama==0){
c2+=cad.charAt(tama);
return c2;
}
else{
c2=cad.charAt(tama)+invertir(cad, tama-1);
return c2;
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int tamaño;
String cadena;
System.out.println("Ingrese la cadena a evaluar: ");
cadena=br.readLine();
tamaño=cadena.length()-1;
System.out.println("La nueva cadena es: "+invertir(cadena, tamaño));
}
}
3. Diseñe una función recursiva exponente tal que dada la base y el exponente como números enteros devuelva su resultado. Validar que la base será mayor que cero y el exponente mayor o igual que cero.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejer5 {
public static int exponente(int base, int exp){
if(exp==0){
return 1;
}
else{
return base*exponente(base,exp-1);
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int n, b;
do{
System.out.println("Ingrese el numero: ");
n=Integer.parseInt(br.readLine());
}while(n<=0);
do{
System.out.println("Ingrese la base: ");
b=Integer.parseInt(br.readLine());
}while(b<0);
System.out.println("El resultado es: "+exponente(n, b));
}
}
4. Programar un algoritmo recursivo que permita sumar los elementos de un vector.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejer6 {
public static int vector(int A[], int num){
if(num==0){
return A[num];
}
else{
return A[num]+vector(A,num-1);
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int V[], n;
System.out.println("Ingrese el tamaño: ");
n=Integer.parseInt(br.readLine());
V=new int[n];
for(int i=0;i<n;i++){
System.out.println("V ["+i+"] = ");
V[i]=Integer.parseInt(br.readLine());
}
System.out.println("La suma de los elementos es: "+vector(V,n-1));
}
}
5. Escribir una función recursiva que tenga un argumento de tipo entero y que devuelva la letra P si el número es positivo y la letra N si el número es cero o negativo.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejer8 {
public static char valor(int numero){
if(numero<=0){
return 'N';
}
else{
return 'P';
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int n;
char v;
System.out.println("Igrese el numero: ");
n=Integer.parseInt(br.readLine());
v=valor(n);
if(v=='P'){
System.out.println("El numero es positivo");
}
else{
System.out.println("El numero es negativo");
}
}
}
6. Escriba una función recursiva que sume los (n) primeros números enteros positivos.
SOLUCIÓN:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejer3 {
public static int sumar(int a){
if(a>0){
return a+sumar(a-1);
}
else{
return 0;
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int n;
System.out.println("INgrese la cantidad de numeros a sumar: ");
n=Integer.parseInt(br.readLine());
System.out.println("La suma es: "+sumar(n));
}
}
7. Escriba una función recursiva muestre la SERIE DE FIBONACCI, ingresando el número de términos.
SOLUCIÓN:
import java.util.Scanner;
public class Ejer9 {
public static int fibonaci(int numero){
if(numero==0||numero==1){
return 1;
}
else{
return fibonaci(numero-1)+fibonaci(numero-2);
}
}
public static void main(String[] args) {
Scanner b=new Scanner(System.in);
int n, i;
System.out.println("Ingrese la cantidad de terminos: ");
n=b.nextInt();
for(i=0;i<n;i++){
System.out.print(fibonaci(i)+" ");
}
System.out.println("");
}
}