1

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

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

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

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

非常感谢。

4

2 回答 2

6

在方法中有效地嵌入方法

好吧,您不会将方法嵌入到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,因为你不会在外面使用它。

于 2013-01-15T15:27:38.933 回答
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);
            }
        }
    }
);
于 2013-01-15T15:29:23.050 回答