JS)再帰関数
12712 ワード
さいきかんすう
1.再帰関数
1.1再帰関数の特性
1.2再帰関数の使用例
1.再帰関数
復帰とは?[ある関数が自分を呼び出す]
1.1再帰関数の特性
特長
1.終了条件:終了条件は、望ましくない値を受け取ったときに再び戻ることを防止します.
2.基本条件(Base case):if文の内部で再帰関数に使用されます.基本条件を満たすために再帰関数を構成しましょう
3.再帰:基本条件に達するまで関数を再帰します.
arr = [1,2,3,4,5,6]
上に並べられたアイテムを1つずつ加算する関数を作成します.もちろん、初めて会った瞬間、私はまずfor Moonを思い出します.
function Sumarr(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
以上の関数は完全に可能です.しかし、私たちは別の角度からこの問題を見ています.1 + Sumarr([2,3,4,5]) // 1과 나머지 배열
3 + Sumarr([3,4,5]) // 1+2와 나머지 배열
6 + Sumarr([4,5]) //1+2+3과 나머지 배열
10 + Sumarr([5]) //1+2+3+4과 나머지 배열
15 + Sumarr([]) //1+2+3+4+5과 나머지 배열
以上の例はコードで以下のように実現されている.function arrSum(arr) {
if(arr.length === 0){return 0}
// 예외로 빈배열이면 0을 출력한다.
if(arr.length === 1){
return arr[0]
//재귀탈출문으로 배열 길이가 1이면 남은 1배열을 출력한다.
}
return arr[0] + arrSum(arr.slice(1))
//재귀문으로 현재 입력된배열의 첫번째 행과 arrSum에 arr의 1번째 인덱스부터 기입하여 함수를 재귀한다.
}
絵より上
最後に,再帰脱出関数のreturn値に逆数を加えた.
これはもっと難しい概念ですが、これは簡単な問題で、再帰の役割を簡単に理解しましょう.
1.2再帰関数の使用例
再帰関数テンプレート
function func(value) {
if (문제를 더 이상 쪼갤 수 없을 경우) {
return 단순한 문제의 해답;
}
// 그렇지 않은 경우
return 더 작은 문제로 새롭게 정의된 문제
}
1.2.1
1から始まる関数
function Sumnum(num) {
if(num === 0){
return num
}
return num + sumTo(num-1)
}
Ex) Sumnum(4)
return ...
4 + Sumnum(3)
return 3 + Sumnum(2)
return 2 + Sumnum(1)
return 1 + Snumnum(0)
return 0
4 + 3 + 2 + 1 + 0 = 10
1.2.2
並べ替え順序の反転
function rrA(arr) {
if(arr.length===0){
return []
}
head = arr.pop()
tail = arr.slice(0,arr.length)
return [head].concat(rrA(tail))
}
arr.長さが0の場合、空の配列を返します.
headの配列の終了値を入力します.
tailではarrの0番目のインデックスから長さを記入します.
一番前のheadをreturnの前に置き、concatを使用して後ろにtailを記入し、現在の関数を再バインドします.
入力された配列の長さが0の場合、再帰出口を介して空の配列concatが出力され、最終的に反転した配列が出力されます.
Reference
この問題について(JS)再帰関数), 我々は、より多くの情報をここで見つけました https://velog.io/@baek1008/JS-재귀함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol