Note/물음표 모음
재귀와 증감 연산자
ilyadelavie
2022. 7. 21. 11:27
아래 재귀 예제 실행 시 return 값에 num-1 대신 num--으로 작성할 경우 입력값이 무한히 반복되다가 StackOverFlowError가 발생한다.
public int sumTo(int num){
if(num<1){
return 0;
}
return num+sumTo(num-1);
//return num+sumTo(--num);
}
그 이유로는 num-- 같은 경우 num값을 먼저 사용 후 1감소 시키기 때문에 인자에 num의 값이 연산없이 그대로 넘어가게 되어 탈출하지 못하고 무한히 재귀가 반복되는 것이다. 그러므로 재귀 메서드에는 --num을 사용하여 해당 결과 값을 인자로 다시 넘겨주는 연산이 적합하다.
재귀 뿐만 아니라 반복되는 수식이 등장하는 코드에서는 증감연산자의 위치에 따른 동작 순서에 유의하자.