Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- devlift
- 코딩
- 9급경제학
- 하버드MBA
- 비전공자 개발
- 자바스크립트
- 바닐라자바스크립트
- 국내수출
- 주식기초
- 주식과채권
- 파생금융
- 비전공자개발자
- 파생경제학
- 개발자되기
- 경제학적개념
- 채권기초
- case method
- 문과 개발
- 경제학적설명
- 케이스메소드
- 배열메소드
- 비전공자 코딩
- 금융기초
- 7급경제학
- 경제학적기초지식
- 콜드콜
- 경제학
- 개발자
- 파생상품
- 경제학기초
Archives
- Today
- Total
deVSner
edabit - Find the Index (Part 2), return 미기입으로 인한 오류 본문
Create a function that searches for the index of a given item in an array.
If the item is present, it should return the index, otherwise, it should return -1.
이런 재귀 함수 문제를 만났습니다.
가볍게 풀어볼까~ 하고 덤볐던 것이 화근이었죠
로직 자체는 생각해내는 데 오래 걸리지 않았습니다만,
다만,...알고리즘 문제 풀다가 평소엔 잘 되던 부분이, 갑자기 눈에 보이지도 않게 오류가 나 버린단 것이었습니다
이번이 그랬습니다.
이번 알고리즘 해결 과정의 문제점은
'return 미기입' 이었습니다.
아래는 최초 작성 코드입니다.
function search(arr, item) {
var count = 0;
function indexF(a) {
if (!a.includes(item) ) {
console.log("여기?")
return -1;
}
if (a[0] === item) {
count += 1 ;
} else {
count += 1;
indexF(a.slice(1));
}
}
indexF(arr)
return count;
}
if 문 사이사이에 return 이 없습니다....
재귀를 본격적으로 마스터하고 싶은 마음을 먹은 지 며칠 됐지만, 아직도 헷갈리기만 합니다.
저렇게 생각한 이유는, indexF(a.slice(1))을 함으로써,
count가 외부함수에 저장이 된다고 생각했기 때문입니다.
console.log를 찍어가며, 디버깅을 한 끝에 제 생각이 틀렸단 것을 알게 되었습니다.
아래는 정답 코드입니다.
function search(arr, item) {
var count = 0;
function indexF(a) {
if (!a.includes(item) ) {
return -1;
}
if (a[0] === item) {
return count;
} else {
count += 1;
return indexF(a.slice(1));
}
}
return indexF(arr);
}
이번 데브로그를 통해서 재귀함수에서도 return 으로 인한 값의 전달적인 부분에 더 신경써야 함을 느꼈습니다.
아직 재귀에서의 컴퓨팅적 사고가 부족하다고 판단이 되네요. 더 연습해야겠습니다.
'자료구조 및 알고리즘' 카테고리의 다른 글
합병정렬 (0) | 2020.07.14 |
---|---|
RomanNumeralTranslator 알고리즘 풀이 (feat. 순서도) (0) | 2020.05.06 |
(작성 중) 재귀함수를 사용할 때, 값이 중복으로 들어가는 경우? (0) | 2020.04.11 |
[edabit] Fix the Code: Un-Mutating an Array - 문제 해결 과정 및 배운 점(구조분해 할당) (0) | 2020.04.05 |
재귀 함수 사용 시에 간과했던 실행 순서 (0) | 2020.04.02 |