我想在线程runnable run()方法中放置一个递归函数 - 这是一个示例片段..
yt[c] = new Thread ( new Runnable() { public void run() { /* recursive function here */ } } );
他们是否可以在run()方法中实现这一点?有效地在方法中嵌入方法(我假设递归函数必须作为方法实现)?
作为一个简单的例子说我将如何实现n!在run()方法中(递归不迭代)?我很困惑。
非常感谢。
答案 0 :(得分:6)
有效地在方法中嵌入方法
好吧,您不会在run
方法本身中嵌入该方法。相反,除了run
之外,再添加一个方法并将其命名为: -
new Thread (
new Runnable() {
public void run() {
/* recursive function here */
fact(10);
}
private void fact(int n) {
// logic
}
}
);
由于使用new Runnable() { }
,您只是创建一个实现Runnable
接口的匿名类,因此,没有人阻止您添加自己的额外方法。也许你也可以把它private
,因为你不会从外面使用它。
答案 1 :(得分:2)
只需向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);
}
}
}
);