Conviértete en un emprendedor,profesional del conocimiento en la programación

lunes, 9 de enero de 2012

RECURSIVIDAD EN METODOS CON RETORNO

Compartir con:



RECURSIVIDAD

En métodos con retorno





 Ejemplo 1:
 Desarrolle un método recursivo que retorne la suma de los n primeros números naturales.



Ejemplo 2:
Desarrolle un método recursivo que retorne el factorial de un número entero no negativo: considere que:
n! = n * (n-1) * (n-2) * … *2 *1
n! = n(n-1)!
Ahora de manera recursiva se puede definir el factorial como:





Ejercicio 1
Diseñe una clase Numeros con los siguientes métodos de ámbito static:

          public static int factorial(int n) {
                       if(n!=0)
                     return n*factorial(n-1) ;
                         else
                         return 1;
                                                  }

           public static int producto (int a, int b){
                     if(b==1)
                      return a;
                        else
                            return a+producto(a,b-1);
                                               }

                 public static int potencia(int x,int n) {
                                if (n==0)
                                   return 1;
                             else
                                 return x*potencia(x,n-1);
                           }

                       public static int fibonacci(int n) {
                             if ((n==1) || (n==2))
                                  return 1;
                           else
                                   return fibonacci(n-1)+fibonacci(n-2);
                  }



Diseñe un panel para el ingreso de datos de cada método, el área de salida y los botones de proceso.
Diseñe un frame que soporte al panel y ejecute su aplicación.





Solución:
package Recursividad;
public class NUMEROS {
    public static int factorial (int n){
        if(n!=0)
            return n*factorial (n-1);
        else
            return 1;
    }
    public static int producto (int a, int b){
        if(b==1)
            return a;
            else{
                return  a+producto(a, b-1);
        }         }
    public static int potencia (int x,int n){
        if (n==0)
            return 1;
        else
            return x*potencia(x,n-1);
    }
    public static int fibonacci(int n){
        if ((n==1) || (n==2) )
                return 1;
        else
            return fibonacci(n-1)+fibonacci(n-2);    }   } // Fin de la clase NUMEROS


Ahora creamos el PanelPrincipal

                     



Ahora la Codificación dentro del Panel.
package Recursividad;
public class PanelPrincipal extends javax.swing.JPanel {
   NUMEROS n;
    public PanelPrincipal() {
        initComponents();
        n=new NUMEROS();   
}
private void btnFactorialActionPerformed(java.awt.event.ActionEvent evt) {                                            
        txtSalida.setText("");
        imprime(""+n.factorial(leeNumeroa()));
    }                                            

    private void btnProductoActionPerformed(java.awt.event.ActionEvent evt) {                                           
        txtSalida.setText("");
        imprime(""+n.producto(leeNumeroa(),leeNumerob()));
    }                                             
    private void txtNumerobActionPerformed(java.awt.event.ActionEvent evt) {                                          
          }                                         
    private void btnPotenciaActionPerformed(java.awt.event.ActionEvent evt) {                                           
        txtSalida.setText("");
        imprime(""+n.potencia(leeNumeroa(),leeNumerob()));
    }                                          
  private void btnFibonacciActionPerformed(java.awt.event.ActionEvent evt) {                                            
          txtSalida.setText("");
        imprime("El Fibonacci es: " + leeNumeroa() +"= "+ n.fibonacci(leeNumeroa()));
    }                                           
    public int leeNumeroa(){
        return Integer.parseInt(txtNumeroa.getText());
    }
    public int leeNumerob(){
        return Integer.parseInt(txtNumerob.getText());
    }
    public void imprime (String S){
        txtSalida.append(S+" \n ");
    }
    private javax.swing.JButton btnFactorial;
    private javax.swing.JButton btnFibonacci;
    private javax.swing.JButton btnPotencia;
    private javax.swing.JButton btnProducto;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField txtNumeroa;
    private javax.swing.JTextField txtNumerob;
    private javax.swing.JTextArea txtSalida;
  } // Fin del PanelPrincipal

Ahora creamos el Principal y llamamos al PanelPrincipal

public class Principal extends javax.swing.JFrame {
      public Principal() {
        initComponents();
        add(new PanelPrincipal());
        setSize(600,500);
    }
public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Principal().setVisible(true);
            }
        });
    }
}










0 comentarios:

Publicar un comentario