코딩테스트 연습
연습문제
콜라 문제
콜라를 a병당 b병으로 바꿔주는 마트가 있다. 콜라 n병을 가져가면 총 몇 병을 받을 수 있는지 구하라.
function solution(a, b, n) {
let coke=0;
return chng(a,b,n,coke);
}
function chng(a,b,n,coke){
if(n<a) return coke;
coke+=(Math.floor(n/a))*b;
n=(Math.floor(n/a))*b+n%a;
return chng(a,b,n,coke);
}
재귀를 아래와 같이 작성하면 결과값이 undefined가 된다.
function chng(a,b,n,coke){
if(n<a) return coke;
//basecase=재귀 전채함수의 즉각적인 종료가 아님
coke+=(Math.floor(n/a))*b;
n=(Math.floor(n/a))*b+n%a;
chng(a,b,n,coke);
1. 없음 //undefined
2. return coke;//첫번째 재귀의 coke값
}
재귀함수에서 모든 스택을 처리한 뒤에 return 할 값을 지정해줘야 함(주로 재귀함수 포함).