さいきかんすう
6406 ワード
貴重な関数とは?
再帰関数は私が参照した関数です.
代表的なのは(今日は解けなかった^^)実際の
実際の
工場は中学の時ですか.数学の概念を学びます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演算を実行します.
回帰の基本概念は
問題の範囲より少し小さいサブ問題を解決し、この答えを使用して元の問題を解決します.
直接回帰と間接回帰
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;
}
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
このように出力します.Reference
この問題について(さいきかんすう), 我々は、より多くの情報をここで見つけました https://velog.io/@hailey_dev/재귀-함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol