본문 바로가기

c

쉽지 않은 재귀함수의 이해 함수 부분에서 처음에 이해하기 어려운 부분이 이 재귀함수. 첨 봤을땐 욕 엄청 했다. 뭐 이런 아이가 다 있냐고 -_- 네X버 지식인에도 검색 해봤지만 속 시원하게 이해시키는 사람이 없었다. 결국 내가 시도한 방법은 "길 따라가보기" 이해력이 느린 나로썬 상당히 괜찮은 방법이었다. 재귀함수는 말 그대로 자기 자신을 호출하는 함수이다. 보통 반복문을 돌려서 쓰면 되지만 재귀함수를 굳이 쓰는 이유는 코드의 간결화 때문이다. (사실 재귀함수를 사용하게 되면 속도는 많이 느려진다) 이 망할놈의 재귀함수. 조건이 있다. 첫번째는 반드시 끝나는 조건이 존재해야 한다는 것. 두번째는 계산 범위가 점점 줄어들어야 한다는 것. 뭔 소린지 모를 것이다. 나도 모르겠다. 일단 재귀함수를 사용한 팩토리얼 계산 코드를 살펴보자.. 더보기
컴파일러에 따라 다르게 연산되는 증감연산자 증감연산자를 쓰는 이유는 간결성 때문이다. 헌데, 무리한 축소는 화를 불러온다. 다음 수식을 살펴보자. int a=5, b=5; b = ++a * a++; 위의 식을 작성한 녀석은 a를 2만큼 증가시키는 것을 원한다. 결론적으로 36이란 값을 얻고 싶은 것이다. 이 녀석의 논리는 다음과 같다. 1. 좌측 a를 증가시킨 값 6과 2. 좌측 a의 증가로 인해 1이 증가한 우측 a 값 6을 3. 서로 곱하여 결과값 36. 얼핏 보면 제대로 된 수식이라 생각할 것이다. 하지만 결과적으로 b에 어떤 값이 저장될 지는 아무도 모르는 것이다. 이유는 어떤 컴파일러를 쓰느냐에 따라 다르기 때문이다. C에서는 좌측선 계산과 우측선 계산이 따로 정해져 있지 않다. 때문에 좌측선 순서로 계산할 때와 우측선 순서로 계산할 때.. 더보기