티스토리 뷰

C/Console

1부터 N까지의 곱을 구하는 수

고기상추밥 2018. 11. 12. 03:00
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>    //printf() 와 scanf() 함수
#include <stdlib.h>    //malloc() free() system() 함수
#include <stdbool.h> //bool 변수
 
//시스템별 헤더포함설정
#if defined(_WIN32) || defined(_WIN64) //윈도우용
#include <crtdbg.h> //_CrtSetDbgFlag() _CrtBreakAlloc()
#endif
 
//시스템별 콘솔명렁어설정
#if defined(_WIN32) || defined(_WIN64) //윈도우용
#define CLEAR "cls"
#else    //POSIX(리눅스) & Mac OS
#define CLEAR "clear"
#endif
 
//자기자신을 호출하여 1부터 특정한수까지의 곱을하는 프로그램을 만들겠습니다.
//코드의 흐름은 변수를 입력받아서 재귀(Recursive)함수로 답을 구해내겠습니다.
 
//전역변수
int g_iVar = 0//입력값을 저장할 변수
int g_iAnswer = 0//정답을 저장할 변수
 
bool Init(); //초기화 함수
int Run(int x); //실행함수
 
int main() //메인함수
{
    if (!Init())    //초기화 실행
    {
        printf("초기화에 실패했습니다.\n");
        return 0;
    }
 
    const int iVar = g_iVar;    //전역변수 사용
    int* const iAnswer = &g_iAnswer; //지역변수 선언한뒤 전역변수 할당
    *iAnswer = Run(iVar);    //재귀함수 시작
 
    printf("1 부터 %d 까지의 곱 :: %d 입니다\n", iVar, *iAnswer);    //정답 출력
    return 0//종료
}
 
bool Init()
{
    int* const iVar = &g_iVar;    //포인터를 따로만들어서 함수가 독립적으로 실행될수 있게 하겠습니다.
 
    printf("정수를 입력해주세요.\n");    //질문 출력
    if (scanf("%d", iVar) != 1)    //입력값이 1이 안되면 초기화 실패.
        return false;
 
    return true;
}
 
int Run(int x)
{
    int iVar = x;    //지역변수에 저장
 
    return iVar == 11 : iVar * Run(iVar - 1);    //자기자신을 호출하는 함수 삼항연산자를 사용했습니다.
}
cs


재귀함수(Recursion)를 이용해서 1부터 N까지의 수를 구합니다.

int 말고 unsigned long long으로 변수를 선언했으면 더큰 수를 저장할수 있어서 좋았을거같습니다


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함