티스토리 뷰


#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)

My MBTI type is ENTP. (Of course I do not believe it 100%, but I want to do that) I use Node.js to develop the backend. I use Ubuntu Linux as my development environment, and I love Vim. I am interested in open source and are keen to contribute. I have a bachelor's degree in computer science from Catholic University and now a software engineer at Plating Inc., I spent about 5 years developing and learning, and I am still interested in software development and culture. Recently, I am interested in React, Serverless structure, Domain Design Driven. Sometimes I play drums in the band.