Java再帰アルゴリズムの詳細説明(パワーノード配置)

黄舟
リリース: 2017-03-30 10:17:11
オリジナル
2166 人が閲覧しました

JavaRecursiveアルゴリズムは、Java言語に基づいて実装された再帰的アルゴリズムです。再帰的アルゴリズムは、大規模なクラスの問題を解決するのに効果的であり、アルゴリズムが簡潔で理解しやすくなります。次に、この記事を通じて Java 再帰アルゴリズムに関する知識を紹介します。興味のある友達は一緒に学ぶことができます

再帰アルゴリズムは、独自の関数またはメソッドを直接または間接的に呼び出すアルゴリズムです。 Java 再帰アルゴリズムは、Java 言語に基づいて実装された再帰アルゴリズムです。再帰的アルゴリズムの本質は、問題をサイズが縮小された同じタイプのサブ問題に分解し、メソッドを再帰的に呼び出して問題の解決策を表すことです。再帰的アルゴリズムは、大規模なクラスの問題を解決するのに効果的であり、アルゴリズムが簡潔で理解しやすくなります。

問題を解決するための再帰アルゴリズムの特徴:

1) 再帰はメソッド内で自分自身を呼び出します。

2) 増分再帰戦略を使用する場合、再帰終了と呼ばれる明確な再帰終了条件が必要です。

3) 再帰的アルゴリズムの問​​題解決は通常非常に単純に見えますが、再帰的アルゴリズムの問​​題解決の操作効率は低いです。したがって、プログラムの設計に再帰アルゴリズムを使用することは一般的に推奨されません。

4) 再帰呼び出しプロセス中に、システムは各層の戻り点、局所量などを格納するスタックを開きます。再帰が多すぎると、スタック オーバーフローなどが簡単に発生する可能性があります。したがって、プログラムの設計に再帰アルゴリズムを使用することは一般的に推奨されません。

再帰アルゴリズムで具現化される「繰り返し」には、一般的に次の 3 つの要件があります。

まず、各呼び出しの規模が縮小される (通常は半分になる) それらの間には密接な関係があり、前回の時間が準備される必要がある。次回用 (通常、前回の出力が次回の入力として使用されます)

第三に、問題の規模が非常に小さい場合は、再帰呼び出しではなく、答えを直接与える必要があります。各再帰呼び出しは条件付きであり (スケールが直接応答のサイズに達しない場合)、無条件の再帰呼び出しはデッド ループ

になり、正常に終了できません。

再帰アルゴリズムを理解するために、次のような例を示します:

問題の説明:

フィボナッチ数列の 10 番目の位置の値を解きますか? (

黄金分割数列

としても知られる

フィボナッチ数列(フィボナッチ数列)は、次のような数列を指します: 1、1、2、3、5、8、13、21...数学では、フィボナッチ数列は次のように再帰的に定義されます: F0=0, F1=1, Fn=F(n-1)+F(n-2) (n>=2, n∈N*))清 Java コードリスト:

package com.bjpowernode.test; 
 
 public classFab { 
 
 public static void main(String args[]){ 
 System.out.println(fab(5)); 
 } 
 private static int fab(int index){ 
 if(index==1 || index==2){ 
  return 1; 
 }else{ 
  return fab(index-1)+fab(index-2); 
 } 
 } 
 }
ログイン後にコピー
プログラム分析:

このインスタンスは、主に再帰的なフィボナッチ列を使用する非常に古典的な例です。この再帰アルゴリズムの出口はコードセグメント

 if(index==1 || index==2){ 
 return 1; 
 }
ログイン後にコピー

にあります。プログラムのインデックスが条件を満たしている場合、再帰は停止します。このプログラムの実行プロセスは次のとおりです。

プログラム分析のこの時点までで、読者は自分でデモを作成するだけで、このアルゴリズムの微妙さを感じることができます。アルゴリズムは難しくて、空に到達するのが難しいと言われています。実際、アルゴリズムの根をマスターすることが最も重要です。この再帰アルゴリズムを例に挙げると、この根が出口であると感じています。出口を見つけさえすれば、アルゴリズムは自然に定着します。

以上がJava再帰アルゴリズムの詳細説明(パワーノード配置)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート