我想在线程可运行的 run() 方法中放置一个递归函数 - 这是一个示例片段..
yt[c] = new Thread ( new Runnable() { public void run() { /* recursive function here */ } } );
他们有什么方法可以在 run() 方法中实现这一点吗?有效地将方法嵌入到方法中(我假设必须将递归函数实现为方法)?
作为一个简单的例子,说我将如何实现 n! 在 run() 方法中(递归不迭代)?我很困惑。
非常感谢。
我想在线程可运行的 run() 方法中放置一个递归函数 - 这是一个示例片段..
yt[c] = new Thread ( new Runnable() { public void run() { /* recursive function here */ } } );
他们有什么方法可以在 run() 方法中实现这一点吗?有效地将方法嵌入到方法中(我假设必须将递归函数实现为方法)?
作为一个简单的例子,说我将如何实现 n! 在 run() 方法中(递归不迭代)?我很困惑。
非常感谢。
在方法中有效地嵌入方法
好吧,您不会将方法嵌入到run
方法本身中。而只是添加一个额外的方法run
并调用它: -
new Thread (
new Runnable() {
public void run() {
/* recursive function here */
fact(10);
}
private void fact(int n) {
// logic
}
}
);
由于 with 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);
}
}
}
);