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

package poo;

/**
 *
 * @author felix
 */
public class Rectangulo {
    private int Base;
    private int Altura;
    private int x0;
    private int y0;
    
    Rectangulo(int unaBase, int unaAltura, int unX, int unY){
        Base = unaBase;
        Altura = unaAltura;
        x0 = unX;
        y0 = unY;
    }
    
    public int Area() {
        return (Base*Altura);
    }
    
    public int Perimetro() {
        return (2*(Base+Altura));
    }
    
    public void Dibuja() {
        int i, j;
        
        for(i=0; i<y0; i++)
            System.out.println("");
        
        for(i=0; i<Base; i++){
            for(j=0; j<x0; j++)
                System.out.print(" ");
            for(j=0; j<Altura; j++) 
                if(i==0 || j ==0 || i== Base-1 || j ==Altura-1)
                    System.out.print("*");
                else System.out.print(" ");
            System.out.println("");
        }
    }
    
    static public void fibonacci_iter(int N) {
        
        int i;
        int f1=1, f2=1, f3;
        System.out.print(f1 + " " + f2 + " ");
        for(i=0; i<N; i++){
            f3 = f1 + f2;
            f1=f2;
            f2=f3;
            System.out.print(f3 + " ");
        }
        System.out.println();
    }  
    
    static public int fibonacci_rec(int N) {
        if(N <=2) return 1;
        else return(fibonacci_rec(N-1) + fibonacci_rec(N-2));       
    }
    
    static public void main(String args[]){
        Rectangulo a = new Rectangulo(4, 5, 3, 5); 
        System.out.println(a.Area()); 
        System.out.println(a.Perimetro());
        a.Dibuja();
        
        fibonacci_iter(10);
        
        for(int i =1; i<12; i++)
          System.out.print(fibonacci_rec(i) + " ");
    }

}
