일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 자바
- C언어 매크로
- 텍스트 파일 읽기
- C언어 배열
- TCP/IP 소켓
- C언어 함수
- C언어
- SQL
- gcc
- C언어 파일입출력
- java
- 포인터
- 오라클
- jsp
- C언어 메모리
- Spring email
- Vim
- HTML5
- 날짜
- 구글 reCaptcha
- placehoder
- Oracle
- C언어 구조체
- URL 다운로드
- 역순
- GUI
- C언어 변수
- Spring google
- Naver SmartEditor
- Google reCaptcha
- Today
- Total
easy software
C언어 재귀적함수 응용 본문
이번에 소개해드릴 내용은 재귀적 함수입니다.
재귀적이란 계속 자기자신을 호출한다고 생각하시면 됩니다.
사용자가 10을 입력하면 2의 10승인 1024를 출력하도록 할텐데요, 솔직히 반복문으로 쉽게 할 수 있는 예제이지만 재귀적함수를 사용해봄으로써 이해를 돕기 위해 함수로 구현했습니다.
재귀적함수는 많은 분들이 어려워하는 개념입니다. 저도 마찬가지구요.
하지만, 프로그래머로써 반드시 이해하고 넘어가야 하는 개념이라고 생각합니다.
주석을 아주 꼼꼼하게 달아놨고 그림설명도 있으니 잘 이해하시기 바랍니다.
#include <stdio.h>
//재귀함수로써 2의 n승을 계산해주는 함수
int RecursiveTest(int input){
//2의 0승은 0을 리턴
if (input == 0)
return input;
//1이상이면 재귀적호출
//input == 0 조건으로 실행시 0만 계속 리턴하여 최종값이 0이됨
//그래서 조건을 1까지만 주고 스택의 최상위의 값에 2를 곱해서 계산
//이런식으로 하면 2의 1승도 바로 2를 출력시킬 수 있음
else if (input == 1)
return input * 2;
//input에 계산한 값을 저장하지 못하고 계속 재귀함수를 호출함
//input에 계산한 값을 저장하는 시점은 input == 1이되어 값이
//return될 때임. 순차적으로 수식을 끝내지 못했던 값들이 저장되기 시작함
else
input = RecursiveTest(input - 1) * 2;
return input;
}
int main(void){
int input;
printf("정수 입력 : ");
scanf_s("%d", &input);
//수식을 계산할 재귀함수 호출
printf("2의 %d승은 %d", input, RecursiveTest(input));
return 0;
}
'C언어 > 변수와 함수' 카테고리의 다른 글
C언어 문자열 함수 fgets() 을 이용해보자 (0) | 2015.02.03 |
---|---|
C언어 getchar와 putchar를 이용하여 대소문자 변환하기 (0) | 2015.02.03 |
C언어 변수들을 적절히 활용하여 최대공약수 구하기 (0) | 2015.01.09 |
C언어 함수를 응용한 구구단 출력 (0) | 2015.01.09 |
C언어 static 변수 활용 방법 (0) | 2015.01.07 |