스택 일단 stack의 구조는 이렇다. 데이터를 넣을땐 위에서 넣고, 데이터를 빼낼때 또한 위에서 뺀다. 아래에서 데이터를 넣고, 뺄 수 없다. 항상 위에서만! 후입선출(last in, first out)을 구조를 가진다. 스택의 예시 1)함수의 호출 2)웹 브라우저에서 뒤로가기 등등.. 예를들어, 재귀함수를 호출한다고 가정해보자. 함수는 실행이 끝나면 자신을 호출한 함수로 되돌아가야한다. 만약 factorial(3)이라는 함수를 호출한다면 factorial(2)가 실행되고, factorial(2)함수가 끝나면 factorial(3)함수로 돌아간다는 뜻이다. 스택은 복귀할 주소를 기억하는데 사용된다. 스택에서 입출력이 이루어 지는 가장 윗부분을 stack top이라고 한다. 가장 밑 스택은 bottom ..
순환 순환이란 어떤 알고리듬이나 함수가 자기 자신을 호출하여 문제를 해결하는 프로그래밍 방법이다. 순환적인 문제를 해결하는데 적합하고, '반복'을 사용하는 것 보다 간결하고 이해가 쉬울 때도 있다. 하지만, 함수를 호출하고 기억장소를 할당해야 하기때문에 반복에 비해서 비효율적이고 속도가 느릴 수 있다. 순환의 예 순환은 순환적인 문제를 해결하는데 적합하다고 했다. 예를 들어, 팩토리얼(factorial)계산은 순환적이다. 팩토리얼의 정의를 살펴보면, n!을 계산하기 위해 n에 (n-1)!을 곱한다. 즉, n!을 정의하기 위해서 다시 (n-1)!을 사용한다는 것이다. 이러한 것을 '순환적'이다 라고 한다. 이것을 재귀함수를 이용해서 풀어보자. int factorial(int n) { if(n