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