TIL[再帰関数]
7701 ワード
さいきかんすう
再帰関数は、関数が自分で停止するまで呼び出される関数です.そしてこの技術を「再帰」と呼ぶ.recures()という関数があると仮定します.
function recurse() {
.
.
.
recurse();
}
再帰関数の特徴
1.再帰関数には、常に繰り返しを停止する条件文が必要です。そうでなければ、この関数は無期限に繰り返されます。
function recurse() {
if(condition) {
// 반복을 멈추게 하는 조건문이 꼭 필요하다.
} else {
recurse();
}
}
function countDown(num){
for (let i = num; i >= 1; i--){ // 이게 반복을 멈추게 하는 조건문인 셈
console.log(i);
}
}
このようにfor moonやwhile moonもよくどこまで繰り返されるのか、その条件が加わるので無限に繰り返されることはなく、目的を達成するときは自分で止めてしまいます.このような再帰関数は重複文と多くの類似点がある.2.再帰関数は、通常、大きな問題を小さな問題に分けるために使用されます。ツリー、図、アルゴリズムなど、将来学習するデータ構造によく使用されます。
再帰関数の例
1.再帰関数を使用した3から1までの例
// 수도 코드
// 1. 우선 함수에 숫자3을 인자로 넣어준다.
// 2. 3을 보여준다.
// 3. 함수에 숫자 2를 인자로 넣어준다.
// 4. 2를 보여준다.
// 5. 함수에 숫자 1을 인자로 넣어준다.
// 6. 1을 보여준다.
function countDown(fromNumber) {
console.log(fromNumber);
countDown(fromNumber-1);
}
countDown(3);
しかし、現在完了しているコードは1で停止するのではなく、無限に繰り返されます.条件文を書いていないからです.function countDown(fromNumber) {
console.log(fromNumber);
let nextNumber = fromNumber - 1;
if (nextNumber > 0) { // 반복을 멈추는 조건문
countDown(nextNumber);
}
}
countDown(3);
今度は彼に条件文を書いた.0より大きい数値でのみ繰り返します.2.n-factorial(n!)として数を入力します。戻り値の例
function factorial(num) {
// 1. num을 받는다
// 2. num을 num * (num-1) * (num-2) * ...(num - (num-1))
if (num <= 1) return 1; // 브레이크 역할 num <= 1 이면 1을 리턴하고 멈춘다
return num * factorial(num - 1); // 결과값
}
1つ目の例とは異なり、値を蓄積する必要がある場合は、蓄積する値(num)と繰り返す再帰関数(num-1)がreturnに追加されます.ソース:
https://www.javascripttutorial.net/javascript-recursive-function/
Reference
この問題について(TIL[再帰関数]), 我々は、より多くの情報をここで見つけました https://velog.io/@dlrbwls0302/TIL-재귀-함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol