Oi....sou estudante de gradua��o em An�lise de Sistemas, e estou com um pequeno problema para fazer funcionar este programa....algu�m poderia me ajudar? (O problema � fazer com que a recursividade e as threads trabalhem de forma a gerar o n�mero do fibonacci desejado....a quest�o est� como coment�rio no fonte)
Obrigado
Aury Fink Filho
 
/*Fibonacci.java
Calculo de Fibonacci usando Threads e recursividade
de n ate limite, usando Threads
de limite ateh 2, usando recursividade
sendo Fibo(n)=Fibo(n-1)+Fibo(n-2), para n>2
Fibo(1)=Fibo(2)=1
*/
class Sequencial
{
    public long Roda(int n)
    {
        if (n < 3) return 1;
        else return this.Roda(n-1)+this.Roda(n-2);
    }
}
 
class Concorrente extends Thread
{
    static public long total;
    static
    {
    total=0;
    }
    private int n;
    private int limite;
 
    public Concorrente(int _n, int _limite)
    {
        this.n=_n;
        this.limite=_limite;
    }
 
    synchronized public void run()
    {
        if (this.n>this.limite)
        {
            Concorrente a=new Concorrente(this.n-1,limite);
            Concorrente b=new Concorrente(this.n-2,limite);
            a.start();
            b.start();
            try
            {
            a.join();
            b.join();
            }
            catch(InterruptedException e){}
        }
        else total=total+1;
    }
}
 
 
public class Fibonacci
{
    public static void main(String args[])
    {
        int limite=5;
        int n=10;
       
        Sequencial b=new Sequencial();
        Concorrente.total=b.Roda(limite);
        System.out.println(Concorrente.total);
 
        Concorrente a=new Concorrente(n,limite);
        a.start();
        try
        {
            a.join();
        }
        catch(InterruptedException e){}
        System.out.println(Concorrente.total);
    }
}
 

 

Responder a