我想向一個線程運行的運行中遞歸函數()方法 - 這裏有一個例子片段..run()方法中的遞歸函數?
yt[c] = new Thread ( new Runnable() { public void run() { /* recursive function here */ } } );
是他們的任何方式運行中)來實現這一點(方法?在方法中有效嵌入方法(我假設遞歸函數必須作爲方法實現)?
作爲一個微不足道的例子說如何實現n!在一個run()方法(遞歸不迭代)?我感到困惑。
非常感謝。
我想向一個線程運行的運行中遞歸函數()方法 - 這裏有一個例子片段..run()方法中的遞歸函數?
yt[c] = new Thread ( new Runnable() { public void run() { /* recursive function here */ } } );
是他們的任何方式運行中)來實現這一點(方法?在方法中有效嵌入方法(我假設遞歸函數必須作爲方法實現)?
作爲一個微不足道的例子說如何實現n!在一個run()方法(遞歸不迭代)?我感到困惑。
非常感謝。
有效地嵌入的方法
好中的一個方法,你不會嵌入在run
方法本身的方法。而是隻需添加另外一個更多的方法來run
並調用它: -
new Thread (
new Runnable() {
public void run() {
/* recursive function here */
fact(10);
}
private void fact(int n) {
// logic
}
}
);
由於與new Runnable() { }
,你只是創建一個匿名類實現Runnable
接口,因此,沒有人添加自己阻止你額外的方法。也許你也可以製作它private
,因爲你不會從外面使用它。
只需在Runnable
(或您可以從run()
方法中調用它的任何地方)添加另一種方法即可。這裏沒有什麼特別的,這將使得很難從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);
}
}
}
);
欣賞編碼功能所需的時間 - 儘管它微不足道 - 謝謝! –
非常感謝 - 我現在看到範圍在runnable塊內,因此對run()函數可見!很好的回覆。 –
@nfcpro ..不客氣:) –