티스토리 뷰


#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 - 기가 막히고 코가 막히는 피보나치 수열 재귀함수


으으 재귀함수 어려움


프로필사진

Yowu (Yu Yongwoo)

백엔드 개발 정점을 꿈꾸는 흔한 개발자입니다
우분투 데스크탑 개발 환경을 매우 선호합니다
최근에는 vscode에 vim 모드 올려서 쓰고 있습니다
개발용 키보드는 역시 해피해킹 프로2 무각입니다
락 밴드에서 드럼을 꽤나 오래 쳤었습니다