Бих искал да положа рекурсивна функция в рамките на текущата runnable run () метод - тук е пример фрагмент.
yt[c] = new Thread ( new Runnable() { public void run() { /* recursive function here */ } } );
Има ли някакъв начин да се приложи това в рамките на метода run ()? Ефективно вграждане на метод в рамките на един метод (аз предполагам, че рекурсивната функция трябва да бъде приложена като метод)?
Като тривиален пример кажете как ще изпълня n! в рамките на метода run () (не се повтаря рекурсивно)? Аз съм озадачен.
Много благодаря.
Отговори:
6 за отговор № 1Ефективно вграждане на метод в рамките на един метод
Е, няма да вградите метода в run
самия метод. По-скоро просто добавете още един метод в допълнение към run
и го наречете: -
new Thread (
new Runnable() {
public void run() {
/* recursive function here */
fact(10);
}
private void fact(int n) {
// logic
}
}
);
Тъй като new Runnable() { }
, вие просто създавате анонимни класове, в които да внедрите Runnable
интерфейс, така че няма никой, който да ви спира да добавяте собствен допълнителен метод. И може би и вие можете да го направите private
, тъй като няма да го използвате отвън.
2 за отговор № 2
Просто добавете друг метод към Runnable
(или навсякъде другаде, където можете да го наречете от run()
метод). Тук наистина няма нищо специално, което би направило трудно да се нарече рекурсивен метод от a run()
метод.
yt[c] = new Thread (
new Runnable() {
public void run() {
System.out.println(compute(10L));
}
private long compute(long n) {
if (n == 0) {
return 1L;
} else {
return n * compute(n - 1L);
}
}
}
);