X의 n제곱 구하기
x와 n을 입력받아 x의 n제곱을 구하는 프로그램을 재귀호출을 사용하여 작성하시오.
입력 : x = 3 n = 5
결과 : 243
● 재귀호출의 단점
- 재귀 호출은 재귀적으로 정의된 알고리즘에 대해 직관적으로 C코드를 쓰게 해주어서 무척 편리하고 형태적으로도 간단합니다. 하지만 재귀 호출은 다음과 같은 이유로 실질적인 사용에 있어서는 배제되는 경우가 많습니다.
첫째. 재귀 호출을 사용하는 함수는 그렇지 않은 함수에 비해 속도가 느리다. 이는 재귀 호출이 연속적인 함수 호출로 이루어지기에 함수를 호출하기 위한 준비(오버헤드)에 소요되는 시간이 많기 때문이다. 속도가 별로 필요가 없는 경우에는 재귀 함수를 그대로 사용해도 되지만 속도를 요하는 내부 루푸 내라면 비재귀 함수로 바꾸어야 한다.
둘째. 재귀 호출을 사용하는 함수는 시스템 다운의 우려가 있다. 완전히 알고리즘적으로 틀린 곳이 없는 재귀 함수라 하더라도 시스템 다운이 될 가능성이 있다. 재귀 함수는 자신을 수없이 많이 호출하는 경우가 많다. 함수를 호출할 때에는 인자 리스트와 지역 변수, 그리고 호출하는 곳의 주소를 내부 스택에 저장해 두어야 하는데 재귀 호출이 빠지지 않고 계속해서 더해지는 경우에는 내부 스택의 영역을 벗어나 드디어는 침범해서는 안 될 영역을 침범하게 된다.
'c언어 재귀함수' 카테고리의 다른 글
6. c언어 재귀함수 - 경우의 수 (0) | 2020.03.25 |
---|---|
5. c언어 재귀함수 - 유클리드호제법, 하노이탑 (0) | 2020.03.25 |
4. c언어 재귀함수 - 계단오르기, 이분검색 (0) | 2020.03.25 |
3. c언어 재귀함수 - 홀수짝수의합, n까지의합 (0) | 2020.03.23 |
1. c언어 재귀함수 (0) | 2020.03.23 |