Foro Matemáticas

Recursividad

Ver el tema anterior Ver el tema siguiente Ir abajo

Recursividad

Mensaje  Favián el Miér Abr 13, 2011 1:29 pm

Las funciones recursivas a aquellas que se definen a partir de ellas mismas
ejemplo 1: (Factorial de un entero)
n!=n*(n-1)!
En java


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


ejemplo 2: (Sucesión de Fibonacci)
fn=fn-1+fn-2 ; para n>2
f1=f2=1
En java


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


ejemplo 3: (Sucesión geometrica an)
an=a*an ; para n>=1
a0=1
En java


int expon(int a,int n){
if(n==0){return 1;}
else{return a*expon(n-1);}
}



Favián

Mensajes : 24
Fecha de inscripción : 12/01/2011
Localización : Popayán

Ver perfil de usuario http://www.unicauca.edu.co/matematicas/farenas

Volver arriba Ir abajo

Re: Recursividad

Mensaje  luisportilla el Lun Abr 25, 2011 6:08 pm

Código:
public class punto {
    int x; int y;
punto(){
x=0;y=0;
}punto(int a, int b){x=a;y=b;}
void dibujalinea(punto A, punto B, JPanel lienzo){
Graphics g=lienzo.getGraphics();
g.setColor(Color.MAGENTA);
g.drawLine(A.x, A.y, B.x, B.y);
}
public punto puntoB(punto A,int p, double angulo){

int x=(int)(p*Math.cos(angulo-Math.PI/4));
int y=(int)(p*Math.sin(angulo-Math.PI/4));
punto B=new punto(A.x+x,A.y+y);
return B;
}
public punto puntoC(punto A,int p, double angulo){

int x=(int)(p*Math.cos(angulo+Math.PI/4));
int y=(int)(p*Math.sin(angulo+Math.PI/4));
punto C=new punto(A.x+x,A.y+y);

return C;}

void frac(punto A,JPanel lienzo, int n, int p, double angulo){
    if(n==0){}else{
    punto B=new punto();
    punto C=new punto();
B=puntoB(A,p,angulo);
C=puntoC(A,p,angulo);
dibujalinea(A,B,lienzo);
dibujalinea(A,C,lienzo);
frac(B,lienzo,n-1,p/2,angulo-Math.PI/4);
frac(C,lienzo,n-1,p/2,angulo+Math.PI/4);
    }

}
}

y con una modificacion


Última edición por luisportilla el Lun Abr 25, 2011 6:22 pm, editado 1 vez

luisportilla

Mensajes : 21
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

fractal

Mensaje  Dorlan Enrique el Lun Abr 25, 2011 6:11 pm

Código:


import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

public class punto {
int x;
int y;

punto(){
x=0;
y=0;}

punto(int a, int b)
{x=a;
 y=b;
}

void dibujalinea(punto A, punto B, JPanel lienzo){
    Graphics g=lienzo.getGraphics();
    g.setColor(Color.blue);
    g.drawLine(A.x, A.y, B.x, B.y);
}

punto nuevopuntoB(punto A,int l, double ang){
int x=(int)(l*Math.cos(ang/2));
int y=(int)(l*Math.sin(ang/2));
punto B=new punto(A.x+x,A.y-y);
return B;
}

punto nuevopuntoC(punto A, int l, double ang){
int x=(int)(l*Math.cos(ang/2));
int y=(int)(l*Math.sin(ang/2));
punto C=new punto(A.x+x,A.y+y);
return C;
}

void fractal(punto A,JPanel lienzo, int n, int l,double ang){
if(n==0){}
else{
  punto B=new punto();
  punto C=new punto();
 
  B=nuevopuntoB(A,l,ang);
  C=nuevopuntoC(A,l, ang);
 
  dibujalinea(A,B, lienzo);
  dibujalinea(A,C, lienzo);
 
  fractal(B,lienzo,n-1, l/2,ang);
  fractal(C,lienzo,n-1, l/2,ang);
  }
 }
}



Código:


private void lienzoMouseClicked(java.awt.event.MouseEvent evt) {                                   
        int alto=lienzo.getHeight();
   
          punto A=new punto(0,alto/2);

   
    A.fractal(A, lienzo,6,350,Math.PI/4);
    }               


Última edición por Dorlan Enrique el Lun Abr 25, 2011 6:41 pm, editado 1 vez

Dorlan Enrique

Mensajes : 8
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

fractal usando recursivida

Mensaje  yeison el Lun Abr 25, 2011 6:32 pm

Código:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Administrador
 */
public class punto {
int x;int y;
punto(){
x=0;y=0;
}
punto(int a, int b){x=a;y=b;}
void dibujalinea(punto A, punto B, JPanel jpanel1){
    Graphics g=jpanel1.getGraphics();
    g.setColor(Color.GREEN);
g.drawLine(A.x, A.y, B.x, B.y);
}

punto puntoB(punto A,int r, double angulo){
int xx=(int)(r*Math.cos(angulo-Math.PI/4));
int yy=(int)(r*Math.sin(angulo-Math.PI/4));
punto B=new punto(A.x+xx,A.y+yy);
return B;
}
punto puntoC(punto A, int r, double angulo){
int xx=(int)(r*Math.cos(angulo+Math.PI/4));
int yy=(int)(r*Math.sin(angulo+Math.PI/4));
punto C=new punto(A.x+xx,A.y+yy);
return C;
}
void fractal(punto A,JPanel jpanel1, int n, int r,double angulo){
if(n==0){}else{
 punto B=new punto();
 punto C=new punto();
 B=puntoB(A,r,angulo);
 C=puntoC(A,r, angulo);
 dibujalinea(A,B, jpanel1);
 dibujalinea(A,C, jpanel1);
 fractal(B,jpanel1,n-1, r/2,angulo-Math.PI/16 );
 fractal(C,jpanel1,n-1, r/2,angulo+Math.PI/16);
 }
}

}




Código:

// ejecucion
private void jpanel1MouseClicked(java.awt.event.MouseEvent evt) {                                   
      int ancho=jpanel1.getWidth();
      int alto=jpanel1.getHeight();
        punto p=new punto(0,alto/2);
p.fractal(p, jpanel1, 10,ancho/5,0);

    }     
 
[img][/img]


Última edición por yeison el Lun Abr 25, 2011 6:49 pm, editado 1 vez

yeison

Mensajes : 6
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: Recursividad

Mensaje  Jesteban el Lun Abr 25, 2011 6:38 pm

Código:
public class punto {
int x;
int y;
 punto(){
 x=0;y=0;
 }
 punto(int a,int b){
 x=a; y=b;
  }
void linea(punto A, punto B, JPanel jPanel1){
Graphics g=jPanel1.getGraphics();
g.setColor(Color.red);
g.drawLine(A.x, A.y, B.x, B.y);       
}
punto puntoB(punto A, int r, double angulo){

int x=(int)(r*Math.cos(angulo - Math.PI/4));
int y=(int)(r*Math.sin(angulo - Math.PI/4));
punto B=new punto(A.x+x,A.y+y);
return B;
}
punto puntoC(punto A, int r, double angulo){

int x=(int)(r*Math.cos(angulo + Math.PI/4));
int y=(int)(r*Math.sin(angulo + Math.PI/4));
punto C=new punto(A.x+x,A.y+y);
return C;
}
 void fractal(punto A, JPanel jPanel1, int n, int r, double angulo){
    if(n==0){}
    else{
    punto B=new punto();
    punto C=new punto();

    B=puntoB(A,r,angulo);
    C=puntoC(A,r,angulo);
    linea(A,B,jPanel1);
    linea(A,C,jPanel1);
    fractal(B, jPanel1,n-1, r/2,angulo-Math.PI/16);
    fractal(C, jPanel1,n-1, r/2,angulo+Math.PI/16);
    }
}
}
------------
 private void jPanel1MouseClicked(java.awt.event.MouseEvent evt) {

 
int alto=jPanel1.getHeight();
punto A=new punto(0,alto/2);
A.fractal(A, jPanel1,6,120,0);

    }


Jesteban

Mensajes : 12
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: Recursividad

Mensaje  felipe nar el Lun Abr 25, 2011 6:42 pm

public class punto {
int x;int y;
punto(){
x=0;y=0;
}
punto(int a, int b){x=a;y=b;}
void dibujalinea(punto A, punto B, JPanel lienzo){
Graphics g=lienzo.getGraphics();
g.setColor(Color.ORANGE);
g.drawLine(A.x, A.y, B.x, B.y);
}

punto puntoB(punto A,int r, double angulo){
int x=(int)(r*Math.cos(angulo-Math.PI/4));
int y=(int)(r*Math.sin(angulo-Math.PI/4));
punto B=new punto(A.x+x,A.y+y);
return B;
}
punto puntoC(punto A, int r, double angulo){
int x=(int)(r*Math.cos(angulo+Math.PI/4));
int y=(int)(r*Math.sin(angulo+Math.PI/4));
punto C=new punto(A.x+x,A.y+y);
return C;
}
void fractal(punto A,JPanel lienzo, int n, int r,double angulo){
if(n==0){}else{
punto B=new punto();
punto C=new punto();
B=puntoB(A,r,angulo);
C=puntoC(A,r, angulo);
dibujalinea(A,B, lienzo);
dibujalinea(A,C, lienzo);
fractal(B,lienzo,n-1, r/2,angulo -Math.PI/4);
fractal(C,lienzo,n-1, r/2,angulo +Math.PI/4);
}
}

}


felipe nar

Mensajes : 12
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

diagrama del arbol

Mensaje  wilmer cordoba el Lun Abr 25, 2011 7:02 pm

Código:
/*public class punto1 {
    int x;int y;
punto1(){
x=0;y=0;
}
punto1(int a, int b){x=a;y=b;}
void dibujalinea(punto1 A, punto1 B, JPanel lienzo){
    Graphics g=lienzo.getGraphics();
    g.setColor(Color.BLUE);
g.drawLine(A.x, A.y, B.x, B.y);
}

punto1 puntoB(punto1 A,int r, double angulo){
int x=(int)(r*Math.cos(angulo-Math.PI/8));
int y=(int)(r*Math.sin(angulo-Math.PI/8));
punto1 B=new punto1(A.x+x,A.y+y);
return B;
}
punto1 puntoC(punto1 A, int r, double angulo){
int x=(int)(r*Math.cos(angulo+Math.PI/8));
int y=(int)(r*Math.sin(angulo+Math.PI/8));
punto1 C=new punto1(A.x+x,A.y+y);
return C;
}
void fractal(punto1 A,JPanel lienzo, int m, int r,double angulo){
if(m==0){}else{
 punto1 B=new punto1();
 punto1 C=new punto1();
 B=puntoB(A,r,angulo);
 C=puntoC(A,r, angulo);
 dibujalinea(A,B, lienzo);
 dibujalinea(A,C, lienzo);
 fractal(B,lienzo,m-1, r/2,angulo-Math.PI/16 );
 fractal(C,lienzo,m-1, r/2,angulo+Math.PI/16);
 }
}

}
private void dibujoMouseClicked(java.awt.event.MouseEvent evt) {
        int ancho=dibujo.getWidth();
      int alto=dibujo.getHeight();
        punto1 A=new punto1(25,alto/2);

A.fractal(A, dibujo, 14,120,0);
    }*/

wilmer cordoba

Mensajes : 10
Fecha de inscripción : 21/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: Recursividad

Mensaje  jenny el Lun Abr 25, 2011 7:04 pm

Código:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

public class puntos {
                    int x;int y;
                    puntos(){x=0;y=0;}
                    puntos(int a, int b){x=a;y=b;}

                    void linea(puntos A, puntos B, JPanel panel)
                    {
                        Graphics g=panel.getGraphics();
                        g.setColor(Color.WHITE);
                        g.drawLine(A.x, A.y, B.x, B.y);
                    }
                   
                    puntos nuevopuntoB(puntos A,int radio, double gama)
                    {
                        int s=(int)(radio*Math.cos(gama+0.6));
                        int t=(int)(radio*Math.sin(gama+0.6));
                        puntos B=new puntos(A.x+s,A.y+t);
                        return B;
                    }
                   
                    puntos nuevopuntoC(puntos A, int radio, double beta)
                    {
                        int w=(int)(radio*Math.cos(beta-0.6));
                        int v=(int)(radio*Math.sin(beta-0.6));
                        puntos C=new puntos(A.x+w,A.y+v);
                        return C;
                    }     
                   
                    void fractal(puntos A,JPanel panel, int n, int r,double angulo)
                   
                    {
                    if(n==0){}
                    else{
                        puntos B=new puntos();
                        puntos C=new puntos();
                        B=nuevopuntoB(A,r,angulo);
                        C=nuevopuntoC(A,r, angulo);
                        linea(A,B, panel);
                        linea(A,C, panel);
                        fractal(B,panel,n-1, r/2,angulo-0.2 );
                        fractal(C,panel,n-1, r/2,angulo+0.2);
                        }
                    }
}

jenny

Mensajes : 9
Fecha de inscripción : 28/02/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: Recursividad

Mensaje  Contenido patrocinado Hoy a las 11:20 am


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.