Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 멍친구
- 리액트
- 프로그래머스
- 웹개발종합반
- ChatGPT
- 코린이
- 프론트엔드
- D반8조
- ReactNative
- 스파르타코딩클럽
- 챗GPT
- rn
- TS
- 팀워크최고
- NotionAI
- Programmers
- 알pdf #파일탐색기미리보기안될때
- TDD
- 실전프로젝트
- Expo
- 사전준비
- REACT
- 알고리즘기초주차
- 필수강의
- 7기
- Ai
- 맥린이
- 항해99
- 달리기반
- typeScript
Archives
- Today
- Total
FrontEnd :-)
재귀(Recursion) 본문
Udemy - 【한글자막】 JavaScript 알고리즘 & 자료구조 마스터클래스
재귀는 자기 자신을 호출하는 함수.
* 중단점(종료점) 반드시 있어야 함!
* 스택 오버플로는 재귀가 멈추지 않는다는 의미. 종료점이 없을 때.
# 재귀 함수 예제 1
// Recursive Version
function countDown(num){
if(num <= 0) {
console.log("All done!");
return;
}
console.log(num);
num--;
countDown(num);
}
countDown(3)
// Iterative Version
function countDown(num){
for(var i = num; i > 0; i--){
console.log(i);
}
console.log("All done!")
}
# 재귀 함수 예제 2
function sumRange(num){
if(num === 1) return 1;
return num + sumRange(num-1);
}
sumRange(4)
# 재귀 함수 예제 3
// Recursive Version
function factorial(num) {
if(num ===1 ) return 1;
return num * factorial(num - 1);
}
// Iterative Version
function factorial(num) {
let total = 1;
for(let i = num; i > 1; i--){
total *= i;
}
return total;
}
# 헬퍼 메소드 재귀
: 재귀적이지 않은 외부 함수가 재귀적인 내부 함수를 호출하는 패턴
function outer(input){
var outerScopedVariable = []
function helper(helperInput){
// modify the outerScopedVariable
helper(helperInput--)
}
helper(input)
return outerScopedVariable;
}
# 헬퍼 메소드 재귀 EXAMPLE
Let's try to collect all of the odd values in an array
function collectOddValues(arr){
let result = []
function helper(helperInput){
if(helperInput.length === 0) {
return;
}
if(helperInput[0] % 2 !== 0){
result.push(helperInput[0])
}
helper(helperInput.slice(1))
}
helper(arr)
return result;
}
#순수 재귀
function collectOddValues(arr){
let newArr = [];
if(arr.length === 0) {
return newArr;
}
if(arr[0] % 2 !== 0){
newArr.push(arr[0]);
}
newArr = newArr.concat(collectOddValues(arr.slice(1)));
return newArr;
}
Pure Recursion Tips
- For arrays, use methods like slice, the spread operator, and concat that make copies of arrays so you do not mutate them
- Remember that strings are immutable so you will need to use methods like slice, substr, or substring to make copies of strings
- To make copies of objects use Object.assign, or the spread operator
'JavaScript > Algorithm' 카테고리의 다른 글
Searching Algorithms (0) | 2023.03.30 |
---|---|
Recursion (0) | 2023.03.27 |
SLIDING WINDOW (0) | 2023.03.24 |
Divide and Conquer (0) | 2023.03.22 |
Frequency Counter - Multiple Pointers (0) | 2023.03.17 |
Comments