Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[2278] Re:숙제해야 하는데... 도와주세여....ㅜ.ㅜ
최준호.스페로 [sparrow] 1185 읽음    2003-04-06 21:47
안녕하세요 스페로 입니다.

일반적인 팩토리얼 함수를 이런식으로 구합니다.
재귀 호출 (recusive)

#include <stdio.h>
#include <conio.h>

int factorial(int a);
int main()
{
  printf("%d",factorial(8));
  getch();
  return 0;
}

int factorial(int a)
{
  if (a <=1 )
    return 1;
  else
    return a * factorial(a - 1);
}

8!는 40320

도스에서 정수 -32768 ~ +32767 범위를 초과하는 것 같습니다.

위소스를 C++빌더 콘솔위자드에서는 아무런 문제가 없군요
32비트 컴파일러를 이용해야 될겉 같습니다.

또는 터보C에서 unsigned short 나 long으로 해보시면 될듯 합니다.
+범위로만 되면 두배 범위가 되기때문에 ..

해보셨는데도 안된다면...

다시한번 태스트 해보세요

제가 터보C가 없는 관계로

32비트 컴파일러에서는 그냥 int로 8!정도는 무난합니다.



병아리~ 님이 쓰신 글 :
: C programming수업을 듣구 있는데요..
:
: 첫번째 과제루..(Turbo C를 이용하구여..)
:
: 임의의 값을 입력받아 n!을 구하는 건데여..
:
: 아직 배운게 별루 없어서여..제멋대루 함 짜봤는데..
:
: 이게..8!이 넘어가면 이상한 값이 나오네여..(음수나..0 등과같은..)
:
: 제가 한건..
:
: #include<stdio.h>
: int main(void)
: {
:      int i, any_num;
:     
:      printf("Type any number : n = ");
:      scanf("%d", &any_num);
:      if (any_num==0)
:           printf("n! = 1\n");
:      else
:      {
:           for(i=any_num-1; i>0; i--)
:                any_num *=i;
:           printf("n! = %d\n", any_num);
:      }
:      return 0;
: }
:
: 이건데요...좀 무식해 보이긴 하지만... 나름대루 해봤는데..
:
: 혹시 변수타입때문인가 해서..unsinged나 long,, double로도 해봤는데..안되더군여..
:
: 왜 안되는건지..어떻게 하면 좀더 큰수까지 팩토리얼을 구할수있는지..
:
: 아주 큰수를 입력하면 결과가 이상할거 같긴 한데..8!부터 안되는건 좀 이상해서여..
:
: 그리고..또 어떻게 하면 좀더 예쁘게(깔끔하게) 짤수 있는지..조언부탁드릴께여..
:
: 감사합니다..^^

+ -

관련 글 리스트
2277 숙제해야 하는데... 도와주세여....ㅜ.ㅜ 병아리~ 1226 2003/04/06
2278     Re:숙제해야 하는데... 도와주세여....ㅜ.ㅜ 최준호.스페로 1185 2003/04/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.