function solution(a, b, n, m = 0) {
if (n < a) {
return m; // 종료 조건: n이 a보다 작을 때 결과 반환
} else {
m = m + Math.floor(n/a) * b; // m 값을 업데이트
n = Math.floor(n/a) * b + n%a
console.log(n,m)
return solution(a, b, n, m);
}
}
원래 매개변수가 a, b, n까지 총 세개만 들어가는 함수로 정의되어있다가 재귀함수로 실행되면서 다음 함수 실행에서도 계승되어야할 변수가 하나 더 생겨서 m이라는 매개변수를 하나 더 넣었다.
함수 매개변수에 기본값을 할당하는 것은 ES6부터 도입된 JavaScript의 기능 중 하나이다. 기본값을 할당한 매개변수는 해당 매개변수가 함수 호출 시 값이 전달되지 않았을 때 사용된다.
solution(2, 3, 10);
위의 함수 호출에서는 m 값이 전달되지 않았으므로 m은 기본값인 0으로 초기화된다. 이렇게 해도 함수는 올바르게 동작하며 m값이 계산에 사용된다.
만약 함수 호출 시 m 값을 전달하면 해당 값이 사용되고, 그렇지 않으면 0이 기본값으로 사용된다.