1

スレッド実行可能なrun()メソッド内に再帰関数を配置したいと思います-これはフラグメントの例です。

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

run()メソッド内でこれを実装する方法はありますか?メソッド内にメソッドを効果的に埋め込む(再帰関数をメソッドとして実装する必要があると想定しています)?

簡単な例として、nをどのように実装するかを言います。run()メソッド内(再帰的に繰り返されない)?困惑しています。

どうもありがとう。

4

2 に答える 2

6

メソッド内にメソッドを効果的に埋め込む

さて、runメソッド自体にメソッドを埋め込むことはありません。むしろ、それに加えてもう1つのメソッドを追加しrun、それを呼び出します。-

new Thread (
   new Runnable() {
        public void run() {
           /* recursive function here */
           fact(10);
        }

        private void fact(int n) {
            // logic
        }
    }
 );

を使用すると、インターフェイスをnew Runnable() { }実装する匿名クラスを作成するだけなRunnableので、独自のメソッドを追加することを妨げる人は誰もいません。privateまた、外部から使用することはないので、作成することもできます。

于 2013-01-15T15:27:38.933 に答える
2

Just add another method to the Runnable (or anywhere else where you can call it from the run() method). There's really nothing special here that would make it hard to call a recursive method from a run() method.

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 に答える