/ / Рекурсивна функция в рамките на метода run ()? - java, multithreading, recursion

Рекурсивна функция в рамките на метода run ()? - java, multithreading, recursion

Бих искал да положа рекурсивна функция в рамките на текущата 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);
}
}
}
);