ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [반복문] 팩토리얼 (계승) 구하기
    Study (etc)/C 2019. 1. 7. 00:29

    처음 해보는 프로그래밍 공부 포스팅인 것 같다.

    아무래도 공적인 느낌보다는 개인적인 성취를 위해 작성하는만큼 경어를 사용하지 않으려고 한다.

    또한 같은 이유로 보통 C언어를 공부하는 순서대로의 포스팅이 안 될 수도 있다.


    처음으로 포스팅 해 볼 오늘의 성취는 for문을 이용한 팩토리얼, 그러니까 계승의 출력이다.

    고등학교 수학 '확률과 통계'에서 쉽게 접해본 경험이 있을 것이다.


    팩토리얼이란 n이란 수부터 1까지 곱해나가는 것을 말하며 !으로 표현한다.

    즉, n!은 n 팩토리얼 또는 n의 계승이라고 읽으며 n × (n-1) × (n-2) × ... 3 × 2 × 1 의 느낌으로 계산한다.

    이 팩토리얼, 계승이라는 녀석은 반복문의 예제로 굉장히 많이 사랑받고 있는 것 같다.


    사용중인 교재는 오렌지 미디어 출판사에서 나온 '윤성우의 열혈 C 프로그래밍' 교재이다. 

    그 교재에 문제로 수록되어 있던 것으로 직접 과제 해결을 위해 작성한 코드임을 미리 밝힌다.


    #소스코드

    #include<stdio.h>
    
    int main(void)
    {
        int num=0,total=1;
        
        printf("정수 입력 : ");
        scanf_s("%d",&num);
    
        for(int i=0;i<=num+1;i++)
        {
            total*=num;
            num--;
        }
    
        printf("정수의 팩토리얼(계승) : %d \n",total);
    
        return 0;
    }

    코드를 작성하고 나서야 느낀 점인데, for문에서 int i를 0으로 초기화 하지 않고 1로 초기화하여 조건식에서 i<=num+1을 i<=num으로 설정할 수도 있었겠다는 아쉬운 점이 남는다.


    for문을 위한 정수형 i 변수가 num+1보다 작거나 같으면 for문 중괄호 안의 total*=num의 대입연산을 실행한 뒤 num에 저장된 수를 감소시켜 (n-1)의 느낌으로 만들었다. 


    일단은 for문으로 만들었지만 추후에 while문 혹은 do~while문 등 타 반복문으로도 바꿔 만들어 올려보도록 하겠다.



    도움이 필요한 분께는 도움이 되었으면 좋겠고, 혹시라도 제가 성장하는데 도움이 되어주실 수 있으신 분께서는 따뜻한 조언 한마디씩 부탁드립니다.

Designed by Tistory.