저는 Java 세계에서 비교적 새로운 편이어서 이해하지 못하는 문제가 있습니다.Java에서 스레드와 재귀를 사용하여 피보나치 수를 계산하십시오.
나는 (피보나치 행을 얻기 위해) 클래스가 있습니다
class Fib {
public static int f(int x){
if (x < 2)
return 1;
else
return f(x-1)+ f(x-2);
}
}
작업은 이제 별도의 스레드에서 각 F (X-1), F (X-2)를 시작하는 것입니다. 한 번은 Thread 클래스를 구현하고 다른 하나는 Runnable을 구현합니다. 아시다시피, 제 교수님의 운동입니다.
자바에서 스레드를 시작하는 방법을 알고 있고이 전체 스레드가 이론적으로 어떻게 작동하는지 알고 있지만이 재귀 함수에서 별도의 스레드를 시작하기위한 솔루션을 찾을 수 없습니다.
실행 기능에서 수행해야 할 작업은 무엇입니까?
아마public void run(){
//int foo=start f(this.x-1)
//int bar=start f(this.x-2)
//return foo+bar?
}
그리고 어떻게 내 실행 가능한 기능에있는 X를 붙여 넣을 수 있습니다? x가 생성시 객체에 전달 되었습니까?
Class Fib ...{
int x;
public ... run ...
public ... f(x)....
}
주요 방법
(new Fib(x)).start();
에서
또는 완전히 잘못된 경로 I입니까?
대단히 감사합니다.이 모든 것이 어떻게 작동하는지 이해하는 데 많은 도움이됩니다. – evildead
와우, 정말 비효율적입니다. 생성 된 스레드의 수는 n이 증가함에 따라 기하 급수적으로 증가합니다. 나는 그렇게 생각하지 않을 것입니다. 그러나 프로세스를 중지하기 전에 시스템을 정지시킬 위험이 있습니다. –
고정 크기 스레드 풀에서 작업하는 것이 이상적이지만 그 개념은 아마도 대답을 복잡하게 만들 것입니다. 이것은 아마도 OP 문제에 대한 가장 간단한 해결책 일 것입니다. 그래서 +1하십시오. –