

전형적인 종료조건이 없는 재귀함수 ㅋㅋㅋ
1. 내가 왜?
2. 미수 줄게 ㅇㅇ
3. 미수가 뭔데
4. 이걸 모름? 설명주절주절
3. 그래서 미수가 뭔데
4. 아니 이걸 모름? 설명주절주절
5. 내가 왜?
위와 같은 이유로 재귀함수에는 기저사례(종료 조건)이 필수로 들어가야 한다.
사실 반복문으로 해결가능한 문제는 반복문으로 해결하는게 가장 좋음
코드
int factorial(int number) {
if (number == 1)
return 1;
else
return number * factorial(number - 1);
}
int main() {
int num;
cout << "insert new number : " << "\n";
cin >> num;
int fact = factorial(num);
cout << "factorial of " << num << " is: " << fact << "\n";
return 0;
}
만약 factorial(5)를 호출한다고 가정해보자.
사실 글로 재귀함수를 설명하는 것은 잘 이해가 되지 않는다. 한번 도식화 해보자
우리는 main 함수를 통해 factorail함수에 대한 매개 값(number)으로 (5)를 받았다.
number는 1에 도달하게 되면 1을 리턴한다. (1의 팩토리얼은 1이기 때문)
그리고 재귀함수는 자기 자신을 호출하며 아래와 같이 동작한다.
factorial(1) = 1 에 도달하면 재귀함수가 탈출하면서 동작하게 된다.
이상 끝.