run()方法中的递归函数?

时间:2013-01-15 15:25:19

标签: java multithreading recursion

我想在线程runnable run()方法中放置一个递归函数 - 这是一个示例片段..

yt[c] = new Thread (
   new Runnable() {
    public void run() {
    /* recursive function here */
    }
    }
 );

他们是否可以在run()方法中实现这一点?有效地在方法中嵌入方法(我假设递归函数必须作为方法实现)?

作为一个简单的例子说我将如何实现n!在run()方法中(递归不迭代)?我很困惑。

非常感谢。

2 个答案:

答案 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);
            }
        }
    }
);