프로그래밍

 3198, 1/160 회원가입  로그인  
   jhj5500
   C언어 에러 관련 질문드립니다..

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2923 [복사]


#include <stdio.h>
int fac_f(int n)                        //팩토리얼
{
        return n*(fac_f(n-1));
}

int C(int n,int k)                        // 이항계수
{
        int result;

        if(k==0 || k==n)
                return 1;
        else if(0<k<n)
                return fac_f(n)/fac_f(k)*fac_f(n-k);
}

int main(void)
{
        int n,k;

        printf("n과 k값을 입력하시오: ");
        scanf("%d %d,&n,&k");

        printf("값은 %d입니다.\n",C(n,k));
        return 0;
}

이항계수 계산하는 건데요, 'fatal error LNK1120: 1개의 확인할 수 없는 외부 참조입니다.' 라는 에러가 떠서요.
봐도 모르겠고.. 어디가 잘못됐나요?;


  Hit : 5917     Date : 2011/03/25 06:54



    
asdwho 무한루프 도네요.

int fac_f(int n) //팩토리얼
{
return n*(fac_f(n-1));
}

이 부분 잘 생각해보시기 바랍니다. 재귀함수에는 반드시 if문 하나쯤은 들어가야 되요.

혹시 왜 무한루프도는지 모르시겠다면 디버깅을 해보시길 ㅎㅎ 디버깅 하는 습관을 길르시면 좋겠습니다 ㅎㅎ
2011/03/25  
/x7375696e6567 음..저도 요즘 1개의 확인할수없는 외부참조입니다
라는 오류때문에 해결방법찾는중인데..
일단 헬로워드에서도 오류가뜨는걸로봐선,
소스상의 오류로 인한 에러는아닌것 같네요
2011/03/25  
/x7375696e6567 해결했습니다!!!!
아마 저와 동일한 경우라면,
프로젝트에서 소스파일을 추가시킨게아닌.
파일 - 새로 만들기 - 파일
이렇게 추가시키셨을텐데요
그렇게 하면 안되구
보기 - 솔루션 탐색기
여셔서 찾아보시면 소스파일이있는데 거기서 추가시켜주시면됩니다
2011/03/25  
jhj5500 감사합니다, 집에와서 해보니 에러는 뜨지 않았고요, asdwho님 말씀대로 함수 고쳤습니다. 그런데 입력한 수가 작을땐 제대로된 값이 나오는데 좀 큰값을 넣으면 값이 나오지 않습니다.(디버그 오류?같은 거라던가 마이너스값, 0,1,,3 같은게 나와요), 그래서 순환함수만 따로 실행해봤는데 똑같더라고요.. 자료형이 int라서 그런가요? 2011/03/27  
asdwho ㄴ 맞습니다 팩토리얼은 숫자가 1만 증가한다고 해도 연산은 엄청나게 커지게 되죠. 뒤로 갈수록.

int 말고 더 큰 변수를 찾아서 해보세요. unsigned int 나 long long int 라거나... long long int는 visual studio에서는 지원안되는걸로 알고 있지만;
2011/03/27  
jhj5500 그렇군요, 감사합니다! 2011/03/28