티스토리 뷰

오늘은 숫자 하나(n)을 입력받아서 1부터 n까지의 합을 구하는 C/C++ 소스를 알아보도록 하겠습니다. 일반적으로 for문이나 while문을 사용해서 합을 구하기도 하지만 오늘은 재귀라는 방법을 이용해서 합을 구해보도록 하겠습니다.


재귀(recursion)는 무엇일까요? 재귀는 자기 자신을 호출하는 것을 말합니다. 예제 소스를 보시면 아시겠지만 재귀는 자기 자신을 여러번 호출해서 값을 구하게 됩니다.


실제로 소스를 보도록 하겠습니다.





C언어로 1부터 n까지 합을 구하는 예제소스(재귀)



아래의 소스는 C언어로 1부터 n까지 합을 구하는 소스입니다.



#include<stdio.h>

int sum(int n); 

int main() 
{ 
   int number; 
   printf("숫자를 입력하세요 : " );
   scanf("%d", &number);
   printf("1부터 %d까지의 합 : %d\n", number, sum(number));
   
   return 0; 
} 

// 합을 구하는 재귀함수
int sum(int n) 
{ 
	if(n<=0) 
		return 0; 
	return n + sum(n-1); 
} 


위 소스를 실행하면 아래와 같이 나옵니다.








C++로 1부터 n까지의 합을 구하는 예제소스(재귀)



아래의 소스는 C++로 1부터 n까지의 합을 구하는 소스입니다.



#include<iostream> 
using namespace std; 
int sum(int n); 
int main() 
{ 
   int number; 
   cout << "n = "; cin >> number; 
   cout << "sum = " << sum(number) << endl; 
   return 0; 
} 

int sum(int n) 
{ 
   if(n<=0) 
       return 0; 
   return n + sum(n-1); 
}



위 소스를 실행하면 아래와 같이 나옵니다.




댓글
  • 프로필사진 비밀댓글입니다 2017.04.11 07:24
  • 프로필사진 하늘과 나 오류 내용을 알려주세요 2017.04.11 07:37 신고
  • 프로필사진 차오르돌 오류가 나서 그러는데 알려주세요?

    심각도코드설명 프로젝트파일 줄비표시 오류(Suppression) 상태
    오류 C4996'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for etails.

    라고 뜹니다
    2019.04.02 14:48
  • 프로필사진 아무개 좀 지난 댓글같지만 지나가다 보여서 답변남깁니다. scanf함수는 버퍼오버플로우같은 공격에 취약하기 때문에 권장하는 함수가 아닙니다. 그래서 컴파일러가 보완된 함수인 scanf_s를 써야한다고 오류 처리를 하는 겁니다. 프로젝트 설정 -> C/C++ -> SDL검사를 아니오로 바꿔주시면 오류는 해결됩니다. 2019.07.30 14:13
댓글쓰기 폼
공지사항
Total
3,146,305
Today
98
Yesterday
1,373
«   2019/11   »
          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
글 보관함