3

それで、私の過去の試験のために勉強していて、num = 7の場合の戻り値はどうなるかを尋ねるこの質問に出くわしましたか?それをBlueJに接続すると、16になりますが、func1はそれを16にするために何をしますか?宣言されたメソッドをメソッド内で再度使用するにはどうすればよいですか?私は検索しましたが、この正確な例を見つけるのは困難でした。すべてが通常の方法を使用するだけで出てくるからです。

ありがとう、

public int func1(int num) 
{
  if ( num <= 2 ) return 1;
  return func1(num – 2) + num;
}
4

6 に答える 6

6

これは、で使用しているのと同じ関数への再帰呼び出しです。

したがって、func1(num – 2)同じ関数を呼び出します-public int func1(int num)num = num - 2、までnum >= 2

したがって、再帰は次のようになります。-

func(n)
   calls func(n-2)
      calls func(n-4)
         .. so on
         calls func(1)
            returns 1
         returns 1 + 3 + ... + (n - 4)
      returns 1 + 3 + ... + (n - 4) + (n - 2) 
   returns 1 + 3 + ... + (n - 4) + (n - 2) + n

更新:-上記の再帰を一般化して、それがどのように機能するかを理解できるようにします。

次の手順を実行できます。-再帰-Wikiページ

于 2012-10-29T09:47:34.677 に答える
3

これは再帰と呼ばれます。それを理解する最良の方法は、デバッガーでそれを監視し、呼び出しのシーケンスがどのように終了するかを検討することです(つまり、それ自体が無期限に呼び出されないのはなぜですか)。

(申し訳ありませんが、これは宿題/試験に関連しているため、完全な回答は得られません)

于 2012-10-29T09:47:10.897 に答える
1

さて、これが再帰のすべてです。メソッドは、特定の終了条件が満たされるまで再帰的に呼び出されます。あなたの場合、終了条件は、メソッドパラメータ値が<=2の値に達したときです。

于 2012-10-29T09:48:52.217 に答える
1

再帰を理解するには、最初に再帰を理解する必要があります。

ここでそれについての良い説明を見つけることができます。

于 2012-10-29T09:49:42.423 に答える
0

あなたが見たいもの(特にあなたの試験のために)は再帰と呼ばれています

この関数は、内部基準が満たされるまで、さまざまなパラメーター値を使用して自分自身を呼び出します。

于 2012-10-29T09:48:35.957 に答える
0

宣言されたメソッドをメソッド内で再度使用するにはどうすればよいですか?

回答:再帰(コンピュータサイエンス)と呼ばれるメソッド内で同じメソッドを呼び出す

ループを使用して再帰を使用せずに実行できます

public int func1(int num) {
        int res=1;
        while(num >= 2 ) {
            res += num;
            num = num-2;
        }
        return res;
    }

ただし、再帰は、ツリー、階層などを操作するときにコードを再利用するための最も重要な機能の1つです。

于 2012-10-29T09:52:12.103 に答える