GNU….
GNU is Not Unix
GNU, 참 재미있는 이름이다. GNU라는 이름 자체가 재귀적으로 사용되어있다. 약자는 ‘GNU’이고 풀어쓰면 ‘GNU is Not Unix’라고 쓴다.
2학년때 C를 배우면서 함수의 재귀적 사용을 이용한 팩토리알 계산 프로그램을 보고 참 신기했던 적이 있었다. 예제 코드를 보기 전까지는 그런 사용법을 본적도 없었고 상상조차 해 본적이 없었기 때문이었다.
생각하는 방법을 바꾸고 새로운 시각으로 문제에 접근해 보면 가끔 너무나도 기발한 해결법이 튀어나온다. 그건 마치 ‘2+2+2+2+2’라는 긴 수학 식에서 ‘2*5’라는 짧은 식을 발견하는 것과 같다. 반복되는 덧셈 과정에서 발생할 수 있는 실수를 획기적으로 줄일 수 있고 식 조차도 간소화되어버린다. 다만 내부적으로는 덧셈을 계산하는 것 보다는 훨씬 부하가 가중될 수 있지만 말이다. 덧셈보다는 곱셉이 어렵잖아요^^ㅋ
긴 코드를 붙잡고 씨름을 하다가 갑작스레 그 모든 코드를 한줄로 해결할 수 있는 방법이 머릿속에 떠올랐을땐 혼자서 환호한다.
유레카!!
그 순간만큼은 나도 아르키메데스가 목욕탕에서 부력을 발견했을때와 비견할만한 발견을 한 느낌이다. 순간 등골을 타고 온몸에 짜릿함이 전해진다.
{
static int op_Factorial(int n)
{
if(n==1)
return 1;
else
return n*op_Factorial(n-1);
}
public static void main(String[] args)
{
int a;
a = op_Factorial(5);
System.out.println(“5!=”+a);
}
}
그냥 팩토이알 생각이 난 김에 자바의 메소드를 재귀적으로 이용해 5! 값을 구해내는 간단한 코드를 작성해 보았다.
최근에 맥북을 장만한 후에 자바코드 작성을 위해서 Xcode를 설치 해 보았다. 잠깐 만져본게 전부이지만 재미있는 녀석같다. 뒤늦게 알았지만 맥OS X용 자바 컴파일러는 Xcode를 통해서 설치가된다. C컴파일러로는 GCC가 설치되고, 코코아라던가 카본처럼 윈도우즈에서는 볼 수 없었던 신기한 녀석들도 함께 설치가 되었다. 아직은 윈도우즈에서 코드를 작성하는것이 익숙해서 맥으로는 많이 헤맨다. 그래도 새로 보는 물건을 이리저리 연구해가는게 재미있어서 종종 만져보고는 있다^^ㅋ
그러니까 오늘 일기의 결론은… 코드를 짜면서 잘 해결되지 않는 문제가 발생했을땐 잠깐 담배 한대 태우면서 여유를 가지고 그것에 대해서 다시한번 생각해 본다. 그러면 시간이 오래 지나지 않아 외칠 수 있다. “유레카!!” 싸인펜은 엉뚱한넘S
GCC는 Xcode와 함께 설치하지만 자바 컴파일러는 OSX에 기본적으로 설치되어있습니다. 당시엔 잘 몰라서 Xcode와 함께 설치된다고 기록해 두었네요^^ㅋ
오, 재귀함수의 아주 기초적인 구조네요 ㅎㅎ
그런데 저 함수에서는 -값을 넣으면 에러가 날 것 같네요 그래서~
if(n > 1) return n * op_Factorial(n – 1);
return 1;
이런식으로 바꿔보는건 어떻까요 ^^;
앗!! 화현님도 유레카!!^^ㅋ
저는 그래도 담배는 해롭습니다.. 요러고. ㅡ.ㅡ
그러면 정정해서 담배대신 커피를 한잔 마시는걸로 할게요^^ㅋ
ㅋㅋ 제가 컴퓨터 과외를 하나 하는데요, 거기서 그 친구한테
아주 간단한 알고리즘 짜는 숙제를 이런식으로 생각해보라고 하면서
이것을 설명하는데 한참 걸렸던 기억이 나네요 ㅠㅠ
함수에 익숙한 사람들이야 한번 보면 오호! 라고 느껴지는 이 방법이
함수에 익숙하지 않은 사람들에게 설명하려면 정말 힘들다는걸 느꼈었습니다 ㅠㅠ
GNU이름 너무 재밌어요 ㅋㅋㅋ 🙂
expj님!! 과외도 하시는군요!!
누군가에게 무언가를 이해시키고 가르쳐 주는게 상당히 어려울텐데, 멋지십니다^^ㅋ