1、再帰の概念:
呼び出し自体を再帰的にそれ、各呼び出し、別の変数を渡すことができ、コードが簡単になりながら、再帰的なヘルプは複雑な問題を解決。
2、再帰呼び出しメカニズム
印刷の問題
com.ethjavaパッケージ; パブリッククラスdiguidayin { パブリック静的無効メイン(文字列[] args){ テスト(4); } パブリック静的ボイド試験(N-INT){ IF(N> 2){ 試験(1-N-); } ;:のSystem.out.println(N +を"N-印刷") } } 2:// N-印刷 3 :. // N-プリント プリント// N:4
再帰呼び出し規則:
スタック:プログラムは、メソッドを実行すると1)、それは別のスペースを開きます。
2)各スペース(ローカル変数)のデータが独立しており、お互いに影響を与えません。
次のように2)です。
この問題を解決するために再帰:
1.アルゴリズム:マージソート、クイックソート、バイナリ検索
2、数学の問題:ハノイの問題、階乗問題、8女王の塔
スタックの問題を解決する3、:再帰的解決は非常に簡単になります。
の原則を遵守する再帰的必要性:
1)メソッドの実装は、それが新しい保護された独立したスペースを作成します。
2)各プロセス(ローカル変数)のためのデータが独立しており、お互いに影響を与えません。
変数は、方法で使用されるそのようなアレイとして参照型()である場合3)、参照がヒープに格納されたデータのタイプによって共有されます。
4)递归必须向退出递归的条件逼近,否则就是无线递归,出现StackOverflowError,
5) 当一个方法执行完毕后,或者遇到return,就会返回到调用的位置,继续往下执行。
遵守规则:谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕。