피보나치 수열(Fibonacci Sequence)피보나치 수열은 앞엣것 두 개 더해서 현재의 수를 만들어가는 수열이다. 수열의 n번째 값 = 수열의 n-1번째 값 + 수열의 n-2번째 값 따라서 피보나치 수열의 n번째 위치의 값을 반환하는 함수는 수학적으로 다음과 같이 표현이 되낟. 그럼 이를 코드로 옯겨보겠다. 12345678int Fibo(int n) { if (n == 1) return 0; else if (n == 2) return 1; else return Fibo(n - 1) + Fibo(n - 2);}Colored by Color Scriptercs 우리는 피보나치 수열을 모두 표현한 것이다. 보통 우리는 '이 함수가 호출이 되고, 그 다음은 저 함수가 호출되네' 라고 하면서 함수의 호출순서..
재귀함수의 기본적인 이해재귀함수란 다음과 같이 함수 내에서 자기 자신을 다시 호출하는 함수를 의미한다. 1234void Recursive(void){ printf("Recursive all! \n"); Recursive();}cs 이 형태의 함수 호출을 우리는 이렇게 이해할 것이다. 위의 그림이 혹시 이해되지 않을 경우 함수가 호출되면 함수의 복사본이 실행되는 구조로 이해해보길 바란다. 위 그림은 복사본이 복사본을 만들고, 또 그 복사본이 다른 복사본을 만들면서 실행되는 구조이다. 위의 Recursive함수는 탈출 조건이 없기에 무한 루프를 돌게 된다. 무한루프를 방지하기 위해 우리는 아래 코드와 같이 탈출 조건이라는 것을 추가해야 한다. 12345678910111213#include void Recur..
시간 복잡도(Time Complexity)와 공간 복잡도(Space Complexity)성능 분석 방법이 필요한 이유는 우리가 자료를 처리할 때 단순이 잘 돌아만 가는 것을 원하는게 아니라 어떠한 상황에서도 우월한 성능을 내기를 원하기 때문이다. ▶알고리즘을 평가하는 두 가지 요소시간 복잡도(Time Complexity) : 얼마나 빠른가 공간 복잡도(Space complexity) : 얼마나 메모리를 적게 사용하는가 사실 메모리를 적게 쓰고 속도도 빠른 알고리즘이 최적의 알고리즘이다. 하지만 대개 알고지즘을 평가할 때는 메모리 사용량보다 속도에 초점을 둔다. ▶성능을 평가하는 방법 성능은 어떻게 평가할까? 위의 표를 보면 2개의 알고리즘 A,B가 있다. 이 두개의 A,B를 비교해 보자 위의 표만 보면 ..
자료구조란 무엇인가?자료구조는 데이터를 표현하고 저장하는 것을 말한다."프로그램이란 데이터를 표현하고, 그렇게 표현된 데이터를 처리하는 것이다." 라는 말이 있는데 여기서 '데이터를 표현' 한다는 '데이터를 저장' 한다는 것을 포함하는 개념이다. 그리고 '데이터 저장'을 담당하는 것이 바로 자료구조라 한다. 넓은 의미에서 int형 변수도, 구조체의 정의도 자료형에 속한다. int형 변수도, 구조체도 데이터를 표현 및 저장하는 하나의 방법이기 때문이다. 뿐만 아니라 배열도 자료구조의 일종이다. 자료구조는 기본적으로 다음과 같이 분류할 수 있다. 위 그림에서 보이듯 파일도 데이터를 저장하는 도구이기 때문에 파일의 구조도(파일이 데이터를 저장하는 방식도) 자료구조에 포함이 된다. 하지만 보통 자료구조에서 다루..