データ構造と再帰のアルゴリズム
ディレクトリ
- 再帰の概念
- 再帰呼び出しメカニズム
- 再帰的な小さなコードを示してい
- 再帰は、問題の任意の種類を解決することができます
- あなたはに従う必要が再帰重要なルール
再帰の概念1
簡単に言えば、再帰的な方法は、各呼び出しで異なる変数を渡して、自分自身を呼び出すことができているコードが簡単になりながら、再帰は、複雑な問題を解決するために、プログラマを助けることができます。
2.再帰呼び出しメカニズム
使用して、私たちの再帰呼び出しメカニズムを示しています
3.小再帰的なコードが示します
package com.recursion;
public class recursionTest {
public static void main(String[] args) {
test(4);
System.out.println("======================");
int res = factorial(3);
System.out.println("res=" + res);
}
//打印问题
public static void test(int n) {
if (n > 2) {
test(n - 1);
}
System.out.println("n=" + n);
}
//阶乘问题
public static int factorial(int n) {
if (n == 1) {
return 1;
} else {
return factorial(n - 1) * n;
}
}
}
結果をコンパイルします。
4.再帰はすべての問題を解決することができます
- 以下のような数学の問題の様々な:8つのクイーン問題、ハノイの問題、階乗問題、迷路、ボールやバスケットのタワーズ(コンテストのプログラミンググーグル)
- アルゴリズムの様々な、高速行として、再帰を使用する、ソート、バイナリ検索、分割マージアルゴリズムを征服、
- スタック>リターンコードの問題は比較的簡単です
5.再帰的に重要なルールは、あなたはに従う必要があります
- メソッドの実装は、それが新しい保護された独立したスペースを作成します(スタック領域)
- この方法は、変数nと、互いに影響を及ぼさないローカル変数とは無関係です
- 変数は、方法で使用される(例えばアレイのような)参照型である場合、それはデータ参照のタイプによって共有されます、
- 条件に再帰的なアプローチは、再帰を撤回しなければならない、またはそこにStackOverflowError、死んだカメ、無限再帰です:)
- メソッドは戻り値を終了し、または発生した場合には、返され、呼び出し誰観察に結果を返します誰も終了しており、メソッドが完了するか、戻って同じ時間