さいきかんすう
13619 ワード
再帰関数とは、自分の関数を呼び出すことです。
countFuncを作成して整数1~nを出力
function countFunc(n) {
if(n>0) {
console.log(n);
countFunc(n-1);
}
}
7をparameterとして実行しようとすると、
出力7、6、5、4、3、2、1.
コードには重複文がありません.どのように実行されますか?
コードの実行順序を1つずつ表示します.
//countFunc(7)
function countFunc(7) {
if(7>0) {
console.log(7);
countFunc(7-1); //6
}
}
//countFunc(6)
function countFunc(6) {
if(6>0) {
console.log(6);
countFunc(6-1); //5
}
}
//countFunc(5)
function countFunc(5) {
if(5>0) {
console.log(5);
countFunc(5-1); //4
}
}
//countFunc(4)
function countFunc(4) {
if(4>0) {
console.log(4);
countFunc(4-1); //3
}
}
//countFunc(3)
function countFunc(3) {
if(3>0) {
console.log(3);
countFunc(3-1); //2
}
}
//countFunc(2)
function countFunc(2) {
if(2>0) {
console.log(2);
countFunc(2-1); //1
}
}
//countFunc(1)
function countFunc(1) {
if(1>0) {
console.log(1);
countFunc(1-1); //0
}
}
//countFunc(0)
function countFunc(0) {
if(0>0) { //false
console.log(0);
countFunc(0-1);
}
}
countFunc(0)終了-->countFunc(1)終了-->countFunc(2)終了-->countFunc 3終了-->countFunc(4)終了-->countFunc(5)終了-->countFunc(6)終了-->countFunc(7)終了-->プログラム終了.再帰関数を階乗で理解する
工場はn!=1 x 2 x 3 x ... x (n-1) x n
の積を表します.
1から自然数nの積.
0!1,1です!道1です.
0! = 1
1! = 1
2! = 1 x 2
n! = 1 x 2 x 3 x ... x (n-1) x n
再帰的に問題を解決し,解題法は同じ動作の形式で,より小さな問題を解決することによって局所的な問題を発見し,その後より大きな問題を解決する.
5!見ると5!=5 x 4 x 3 x 2 x 1ここで見ると4 x 3 x 2 x 1->この部分は4!この部分は3!2 x 1 --> 2! 1 --> 1! はい、確認できます.
ではn!(n工場)
n=0とn>0に分けることができますよね?
再帰関数には再帰を終了する条件が必要です.
したがって,再帰を終了する値が0または1の場合,再帰関数を終了するための条件を与える.
n=0はn!=1 (base case)
n>0はnを表します!=(n - 1)! x n (recursive case)
basecase:問題が小さい場合は、解決する必要がある問題の一部がなければ、それを使用します.
recursive caseがある限り、関数を再帰的に呼び出し続け、終了しないためbasecaseを使用する必要があります.
次の関数は計算工場の関数です.
function factorialFunc(n) {
if(n === 0) {
return 1;
}
return n * factorialFunc(n-1);
}
FactorFunc(5)を入れて関数を実行してみます.1 x 2 x 3 x 4 x 5を算出し、120を決定することができる.
Reference
この問題について(さいきかんすう), 我々は、より多くの情報をここで見つけました https://velog.io/@jy777hi/재귀-함수-Recursive-Functionテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol