データ構造と再帰のアルゴリズム

データ構造と再帰のアルゴリズム


ディレクトリ

  1. 再帰の概念
  2. 再帰呼び出しメカニズム
  3. 再帰的な小さなコードを示してい
  4. 再帰は、問題の任意の種類を解決することができます
  5. あなたはに従う必要が再帰重要なルール

再帰の概念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.再帰はすべての問題を解決することができます

  1. 以下のような数学の問題の様々な:8つのクイーン問題、ハノイの問題、階乗問題、迷路、ボールやバスケットのタワーズ(コンテストのプログラミンググーグル)
  2. アルゴリズムの様々な、高速行として、再帰を使用する、ソート、バイナリ検索、分割マージアルゴリズムを征服、
  3. スタック>リターンコードの問題は比較的簡単です

5.再帰的に重要なルールは、あなたはに従う必要があります

  1. メソッドの実装は、それが新しい保護された独立したスペースを作成します(スタック領域)
  2. この方法は、変数nと、互いに影響を及ぼさないローカル変数とは無関係です
  3. 変数は、方法で使用される(例えばアレイのような)参照型である場合、それはデータ参照のタイプによって共有されます、
  4. 条件に再帰的なアプローチは、再帰を撤回しなければならない、またはそこにStackOverflowError、死んだカメ、無限再帰です:)
  5. メソッドは戻り値を終了し、または発生した場合には、返され、呼び出し誰観察に結果を返します誰も終了しており、メソッドが完了するか、戻って同じ時間

おすすめ

転載: blog.csdn.net/weixin_41910694/article/details/92843375