Algorithm 2

알고리즘 공부 - 재귀함수 2편(하노이의 탑, 재귀 제거)

이번 포스팅에선 지난 재귀함수 1편에 이어서 공부해보겠습니다! 재귀함수를 제거하거나 비재귀적으로 표현하려면 어떻게 해야할까요? 꼬리 재귀의 제거 메서드의 꼬리에서 재귀 호출하는 메서드 recur(n-2)라는 말은 '인자로 n-2를 전달하여 recur 메서드를 호출한다.' 는 의미 입니다. 따라서 이 호출은 다음과 같이 바꿀 수 있습니다. n 의 값을 n - 2로 업데이트하고 메서드의 시작 지점으로 돌아갑니다. static void recur(int n) { while (n > 0) { recur(n - 1); System.out.println(n); n = n-2; } } 이렇게 하면 메서드의 끝에서 실행하는 꼬리 재귀(tail recursion) 는 쉽게 제거할 수 있습니다. 일반 재귀의 제거 그런데 ..

알고리즘의 대한 공부

알고리즘 (Algorithm) 간단히 말해 문제를 해결하기 위한 과정. 혹은 명확하게 정의되고 순서가 있는 유한한 갯수의 규칙으로 이루어진 집합이라 한다. 많은 사람들이 코딩테스트 == 알고리즘이라고 하지만, 이는 반만 맞는 말이라고 생각한다.. 결국 코딩테스트도 문제를 해결하는 법을 아는지 테스트하는 일련의 과정일 뿐이고, 알고리즘이라는 카테고리에 소속되어 있는 것. 알고리즘을 처음 접하는 나같은 사람들이 개념정리를 하고 갔으면 하는 생각으로 글을 써보겠다. 비전공자 입장에서 알고리즘은 정말 알 수 없는 미지의 세계 그 자체다.. 어렴풋이 듣기로 알고리즘이 문제푸는방법쯤으로 알고 있던 나랑 아마 비슷할거라고 생각한다. 알고리즘의 프로그래밍으로 문제를 해결하는 방법에는 여러가지가 있지만, 입문자, 신입,..