재귀함수 사용한 풀이 (1. 최댓값최솟값, 2. 문자열뒤집기)

susu.J·2020년 10월 4일
0

최소값은 등호만 바꿔주면 된다.

.
.

revStr('cat');
재귀함수가 동작.

자바스크립트에서, substr() 메소드는 특정한 위치에서 시작하는 문자열을 반환. cat.substr(1) === 'at'와 같은 결과를 내보낸다.

str[0]는 문자열에서 첫 인덱스에 위치한 문자를 내보냄. cat[0] === 'c'와 같은 결과를 내보낸다.

return revStr(str.substr(1)) + str[0];

// 아래와 같다.
return revStr('at') + 'c';
재귀가 다시 한번 동작한다.

return revStr(str.substr(1)) + str[0];

// 아래와 같다.
return revStr('t') + 'a';
재귀가 마지막으로 동작한다.

return revStr(str.substr(1)) + str[0];

//아래와 같다.
return revStr('') + 't';
이번엔 기반 조건이 동작하고, 함수가 빈 문자열을 반환한다.

if(str === '') return '';
이제 함수가 결과를 반환한다. 모든 것이 풀렸고 순서대로 반환한다.

return '' + 't' + 'a' + 'c';
// tac

revStr('cat')  returns revStr('at') + 'c'
revStr('at')   returns revStr('t') +  'a'
revStr('t')    returns revStr('') +   't'
revStr('')     returns               ''

이제, 여기 중첩된 함수 호출들이 있다. 
중첩된 함수 호출을 갖고 있을 때, 가장 안쪽 함수가 가장 먼저 실행된다. 
계속 리턴을 하며 쌓인 재귀를 풀어나가기 시작하는 과정이라고 한다.

revStr('')     returns                ''  => ''
revStr('t')    returns revStr('') +   't' => '' + 't'
revStr('at')   returns revStr('t') +  'a' => '' + 't' + 'a'
revStr('cat')  returns revStr('at') + 'c' => '' + 't' + 'a' + 'c'
// tac
profile
on the move 👉🏼 https://sjeong82.tistory.com/

0개의 댓글