ホームページ >コンピューターのチュートリアル >コンピュータ知識 >再帰アルゴリズムを使用して Java バイナリ検索を実装する方法
パブリック クラス バイナリ再帰検索 {
public static void main(String[] args) は、Java プログラムのエントリ ポイントであり、プログラム実行の開始位置です。この方法では、プログラムの主要なロジックと機能を記述することができます。このメソッドは、Java 仮想マシンによって呼び出されて実行される前に、特定の形式で定義されている必要があります。 main メソッドのパラメーター リストの args は、コマンド ライン パラメーターを受け取るために使用できる文字列配列です。 mainメソッドにコードを記述することで、出力、計算、ループ、条件判定などの様々な機能を実装することができます。 {
//配列を定義します。二分探索配列は順序付き配列でなければならないことに注意してください。
int[] arr = { 1, 3, 5, 7, 9, 11, 13, 15, 17 }; は、9 つの要素を含む整数配列の宣言および初期化ステートメントです。各要素の値は 1、3、5、7、9、11、13、15、17 です。このようにして、arr という名前の整数配列を作成し、それに初期値を割り当てます。後続のプログラムでは、この配列を使用して、検索、並べ替え、カウントなどのさまざまな操作を実行できます
//検索後の戻り値を受け入れます: インデックス値、そうでない場合は -1;
//テスト検索要素: 9
int a = binarySearch(arr, 9, 0, arr.length - 1);
System.out.println("検索されている番号のインデックス位置は次のとおりです: " a);
}
//パラメータ リストは、検索する配列、検索する番号、先頭のインデックス、末尾のインデックスです。
public static int binary(int[] arr, int key, int start, int end) // 再帰
{
//アクセスするたびに中間インデックス値を作成します。
int mid = (スターエンド) / 2;
検索対象の番号が開始インデックスより小さいか、終了インデックスより大きい場合、または開始インデックスが終了インデックスより大きい場合、その番号は存在しないことを意味し、-1 が返されます。
if (キー arr[終了] || 開始 > 終了) {
-1 を返す;
}
//中央の値が検索対象の数値より小さい場合は、ヘッダー インデックスを再定義して中央の 1 の位置に移動し、数値の半分を除外できるようにします。
if (arr[mid]
//再帰を開始します!
return binary(arr, key, mid 1, end); // 配列の後半で二分探索を続行します
//それ以外の場合、中央の値が検索対象の数値より大きい場合は、末尾のインデックスを中央の位置 -1 に戻して、数値の半分を除外できるようにします。
} else if (arr[mid] > key) {
//再帰を開始します!
return binary(arr, key, start, mid - 1);
###} それ以外 {###//そうでない場合は、見つかってインデックスに戻ります。
途中で戻る;
}
}
}
マスター プログラミング JAVA 言語は再帰アルゴリズムと 1 2 3 4 100 または 11 13 15 を使用します
パブリック クラス CalSum {
public static void main(String[] args) は、Java プログラムのエントリ ポイントであり、プログラム実行の開始位置です。この方法では、プログラムの主要なロジックと機能を記述することができます。このメソッドは、Java 仮想マシンによって呼び出されて実行される前に、特定の形式で定義されている必要があります。 main メソッドのパラメーター リストの args は、コマンド ライン パラメーターを受け取るために使用できる文字列配列です。 main メソッドにコードを記述することで、出力、計算、ループ、条件判定などのさまざまな機能を実装できます。
{CalSum calSum = new CalSum();
int result = calSum.calculate(100); // calSum オブジェクトの Calculate メソッドを呼び出し、パラメータ 100 を渡し、結果を result 変数に代入します。
System.out.println("1 2 3 ... 100 の合計は次と等しい" 結果);
}
パブリック int 計算(int 数値)
{
int 結果 = 0;
if(数値 == 1)
{
結果 = 1;
}
###それ以外###
{result = number Calculate(number - 1); 結果は、現在の数値と戻り値の数値 1 を加算することになります。この式は再帰的に計算できます。再帰呼び出しが行われるたびに、number の値は 1 ずつ減らされ、number が 1 に等しくなるまで再帰が停止されます。再帰呼び出しの戻り値は、最終結果に継続的に蓄積されます。このようにして、シーケンスの合計を取得できます。
}
結果を返す;
}
}
Java の再帰と反復のアルゴリズムとは何ですか
反復は通常のループです。
例: 1 から 10 まで加算します
for(int i=0;i sum=合計 i;
}
再帰とは、関数がそれ自体を直接的または間接的に呼び出すことを意味します。
例: 昔々、お寺に大きな僧侶と小さな僧侶がいました。大きな僧侶は小さな僧侶に話をするように頼みました。小さな僧侶は、昔々、大きな僧侶がいましたと言いました。お寺の小さな僧侶がいます。小さな僧侶は大きな僧侶に話をしてほしいと頼みました。物語の中で、大きな僧侶は続けて、「むかしむかし、お寺に大きな僧侶と小さな僧侶がいました。彼らは修行をしました」と言いました。そして毎日一緒に仏教を学びました。
再帰の特徴:
3 つの条件が必要です:
1. 間接的または直接的に自分自身を呼び出します。
2. ゲームをプレイする際には、大僧侶の口が乾いたら話を聞かなくなるなど、ゲームを終了するための条件を必ず設定してください。終了条件が設定されていない場合、ゲームが無限ループに陥る可能性があります。
###3。論理本体 (やりたいこと) が必要です;
パブリック int sum(int x){
if(x
x を返す;
}
return x sum(x-1);
}
int s=10;
int total=sum(s);
この例では、sum 関数は常にそれ自体を呼び出し、return x sum(x-1);
sum には終了条件があります。x
最終結果は 10 9 8 7 ... 1
を返します。多くの場合、反復と再帰の両方で同じ機能を実現できますが、反復では完了できない機能もあります。さらに、再帰コードはより簡潔であり、再帰を上手に使用するとコードの品質を向上させることができます。
以上が再帰アルゴリズムを使用して Java バイナリ検索を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。