티스토리 뷰
반응형
#include "stdio.h"
#define MAX 10
int arr[MAX] = {1,2,3,4,5,6,7,8,9};
int sum(int st, int ed) {
if(st == ed) {
return arr[st];
}
else return sum(st, ed-1) + arr[ed];
}
void main() {
printf("sum : %d ", sum(0, MAX-1));
}
위 소스코드는 흔하디 흔한 1~10 까지 더해주는 프로그램이다. 대부분 이 프로그램을 코딩할 때 for문을 사용하지만 이 코드에서는 재귀함수(Recursion)가 사용되었다.
문제해결기법 강의 교수님이 말하길 재귀함수는 프로그래밍에 있어 가장 중요한 부분 중 하나이며, 이에 익숙해지기 위해서는 모든 문제에 대해 그 해결법을 재귀적으로 접근하는 연습을 해야한다고 한다. 또한 무엇보다도 본인이 점화식을 통해 재귀함수를 끄집어 내는 과정이 중요하며 정 이해가 안된다면 디버깅을 통해 함수가 어떻게 재귀적으로 작동하는지 확인도 할 줄 알아야한다.
마찬가지로 피보나치 수열을 재귀적으로 접근해 해결한 코드도 있다.
2014/09/18 - 기가 막히고 코가 막히는 피보나치 수열 재귀함수
으으 재귀함수 어려움
반응형
'컴퓨터공학' 카테고리의 다른 글
시스템 호출(System Call)과 라이브러리 함수(Library Function) 차이 (0) | 2014.09.24 |
---|---|
getopt() 함수 예제 (0) | 2014.09.24 |
[알고리즘 연습문제] Letter Bank (0) | 2014.09.22 |
기가 막히고 코가 막히는 피보나치 수열 재귀함수 (0) | 2014.09.18 |
[문제해결기법] 게으른 거미 (fail) (0) | 2014.09.18 |
리눅스에서 SQLPLUS 원격 접속시 서비스 식별자, tnsnames.ora 파일 생성하기 (0) | 2014.09.18 |
SQLPLUS 리눅스 설치시 에러 해결 (0) | 2014.09.16 |