◆ 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가 됩니다.

 

c언어 재귀함수 홀수 짝수의 합

 

◆ 재귀함수를 이용하여 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언어 재귀함수 누적합
Posted by 명문코딩컴퓨터
,