さいきかんすう



貴重な関数とは?


再帰関数は私が参照した関数です.
代表的なのは(今日は解けなかった^^)実際の

実際の


工場は中学の時ですか.数学の概念を学びます5!これは、5~1の間を順番に乗じた演算です.
例えば、5!12345、すなわち120です.
工場は主に状況を求める数量に用いられる.
n種類の色をリストする場合、個数nを要求します!やればいい.
これを使って文章を書いてコードで実現すれば
public static int fact(int n) {
    int result = 1;
    
    for(int i = 1; i<=n ; i++) {
        result *= i;
    }
    
    return result;
};
 public static int fact(int n) {
        if(n<=1)
            return 1;
        else
            return fact(n-1)*n;
    }
このように実現することができる.
このようにして,関数に自己を再参照して再帰関数と呼ぶ.
こんな簡単なことがどうしてできないのですか.ううう
呜呜...
例えば、運転fact(5);

n=5


elseゲートでfact(4)x 5に戻ります.
事実(4)は、その中で再実行されます.

n=4


そしてelseゲートで再び
fact(3)x4x5
...
このようにして.

n=2


に進み、

n=1


nだけが戻るので、
結果は.
1 x 2 x 3 x 4 x 5演算を実行します.

回帰の基本概念は


問題の範囲より少し小さいサブ問題を解決し、この答えを使用して元の問題を解決します.

直接回帰と間接回帰

  • 直接回帰:自分と同じメソッド
  • を呼び出す
    a() {
    	a();
    }
  • 間接回帰:他の方法で自分と同じ方法を呼び出す
  • b() {
    	a();
    }
    
    a() {
    	b();
    }

    スタックフレームの再帰関数の理解


    Javaメモリ構造では、メソッドがStackに昇格します.
    再帰関数の例にNを挿入すると、1からNまでのすべての数値を出力する関数が作成されます.
    
    public void DFS(int n) {
    	if(n==0) return;
    	else {
    		DFS(n-1);
            System.out.print(n + " ");
    	}
    }
    書くことができます.
    ここでSystem.out.print()が関数の上にあるかどうか、
    以下によって数字の出力順序が逆になることを理解するには、Stack Frameの仕組みを理解する必要があります.
    周知のように、StackはFirst In Last Out構造からなる.
    Main MethodがDFS (3)を呼び出すと、
    Stack乗elseゲート
    Stack FrameDFS(1)DFS(2)DFS(3)
    このように積み上げる.
    入るとDFS(3)から順次スタックされ、System.out.print()は保留状態となり、全てスタックされた後、DFS(1)から順次出力関数が実行され、Popとなる.
    実際の出力は次のとおりです.1 2 3このように出力します.