RECURSIVIDAD EN JAVA



EJERCICIOS RESUELTOS


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("");       
    }
}

1 comentario: