◆ c언어 재귀함수 홀수 또는 짝수의 합 구하기
자연수 n을 입력받아 n이 홀수이면 1부터 n까지 홀수의 합을, n이 짝수이면 2부터 n까지 짝수의 합을 구하는 프로그램을 재귀호출을 사용하여 작성하시오.
n = 13일때(홀수일때) n = 13일때 조건이 false이기 때문에 13 + rec(11)을 호출 n = 11일때 조건이 false이기 때문에 11 + rec(9)을 호출 n = 9일때 조건이 false이기 때문에 9 + rec(7)을 호출 n = 7일때 조건이 false이기 때문에 7 + rec(5)을 호출 n = 5일때 조건이 false이기 때문에 5 + rec(3)을 호출 n = 3일때 조건이 false 이기 때문에 3 + rec(1)을 호출 n =일때1 조건이 True 1을 return 합니다. n = 1 이면 1 n = 3 이면 3 + 1 n = 5 이면 5 + 3 + 1 n = 7 이면 7 + 5 + 3 + 1 n = 9 이면 9 + 7 + 5 + 3 + 1 n = 11 이면 11 + 9 + 7 + 5 + 3 + 1 n = 13 이면 13+ 11 + 9 + 7 + 5 + 3 + 1 이 됩니다 |
n = 10 일때(짝수일때) n = 10일때 조건이 false 이기 때문에 10 + rec(8)을 호출 n = 8일때 조건이 false 이기 때문에 8 + rec(6)을 호출 n = 6일때 조건이 false 이기 때문에 6 + rec(4)을 호출 n = 4일때 조건이 false 이기 때문에 4 + rec(2)을 호출 n = 2일때 조건이 True이므로 2를 return 합니다. n = 2 이면 return 2 n = 4 이면 4 + 2 n = 6 이면 6 + 4 + 2 n = 8 이면 8 + 6 + 4 + 2 n = 10 이면 10 + 8 + 6 + 4 + 2가 됩니다. |
◆ 재귀함수를 이용하여 1 + (1+2) (1+2+3) + ........ + (1+2+3+....+n) 을 계산하는 프로그램을 작성하여 보자
#include <iostream>
using namespace std;
int sum(int);
int hap(int);
int main()
{
int n;
cin >> n;
cout << "누적합 = " << sum(n) << '\n';
return 0;
}
int sum(int n)
{
if(!n) return 0;
return hap(n) + sum(n-1);
}
int hap(int n)
{
int i, nhap=0;
for(i=1;i<=n;i++) nhap += i;
return nhap;
}
'c언어 재귀함수' 카테고리의 다른 글
6. c언어 재귀함수 - 경우의 수 (0) | 2020.03.25 |
---|---|
5. c언어 재귀함수 - 유클리드호제법, 하노이탑 (0) | 2020.03.25 |
4. c언어 재귀함수 - 계단오르기, 이분검색 (0) | 2020.03.25 |
2. c언어 재귀함수 - x의 n제곱 (0) | 2020.03.23 |
1. c언어 재귀함수 (0) | 2020.03.23 |