목록C/C++ (15)
bdfgdfg

재귀함수. 재귀함수는 나(함수)자신을 재 호출하는 함수를 이야기한다. void Recursive() { pritnf("Recursive Call"); Recursive(); } (위의 경우는 탈출조건이 없는 재귀함수) 재귀함수는 함수의 호출순서를 스택으로 쌓고 탈출조건이 완료되면 마지막에 호출되었던 녀석이 역순으로 종료되는 구조. 이 재귀함수는 탈출조건이 존재한다. 매개변수에 인자로 넘겨온 수가 0보다 작게되면 종료. 그림을 보면 호출의 순서와 반환의 순서는 역순이다. 재귀함수를 쓸 수 있는 간단한 예제를 본다. #include int Factorial(int num) { if(num == 1) return 1; else return num * Factorial(num - 1); } int main() ..
시간 복잡도와 공간 복잡도 앞서 자료구조를 살펴보았을 때 앞으로 배워야할 자료구조의 종류는 다양했다. 그 이유는 데이터를 표현하는 방법에서 그냥 만능키와 같은 자료구조와 알고리즘은 존재하지 않기 때문이다. 그렇기에 우리는 어떤 상황에서 자료구조/알고리즘을 선택해야하는지를 판단할 수 있어야한다. 1. 어떤 알고리즘이 어떠한 상황에서 더 빠르고 또 느린가? 2. 어떤 알고리즘이 어떠한 상황에서 메모리를 적게 쓰고 또 많이 쓰는가? 이렇듯 알고리즘을 평가하는데에 크게 두 가지 요소가 존재하는데 하나는 '속도'와 관련된 이야기이며 다른 하나는 '공간'에 관한 이야기이다. 속도에 관한 아록리즘의 수행시간 분석결과를 가리켜 '시간 복잡도' 라 하고 메모리 사용량에 대한 분석결과를 가리켜 '공간 복잡도' 라 한다. ..

자료구조란? "어떻게 데이터를 표현하느냐"이다. 위에서 말하는 데이터의 표현은 데이터의 저장을 포함하는 개념이다. 이렇듯 '데이터의 저장'을 담당하는 것이 바로 자료구조. 그렇기에 우리가 언어를 공부하면서 배운 기본 자료형 int형, 구조체 혹은 배열등도 자료구조에 속한다. 하지만 흔히 자료구조라함은 이렇게 간단한 구조를 지칭하는것이 아닌 좀 더 복잡한 형태의 자료구조를 이야기한다. 자료구조의 분류 주로 공부할 내용은 선형구조(리스트,스택,큐등)와 비선형구조(트리,그래프). 자료구조와 알고리즘 자료구조가 '데이터의 표현 및 저장방법'을 뜻한다면 알고리즘은 그 자료구조의 데이터를 대상으로 하는 문제 해결방법을 뜻한다. 예를 들어보자. int arr[10] = {1,2,3,4,5,6,7,8,9,10}; 위의..