조금씩 꾸준히 완성을 향해

[C 언어] 재귀 함수 본문

기타 언어/C 언어

[C 언어] 재귀 함수

all_sound 2023. 3. 29. 15:45

재귀 함수 

- 함수 내에서 자기의 함수를 다시 호출하는 함수

- 스택 내에서 차곡차곡 쌓아두었다가 일괄로 처리한다

 

 

<예제 1>

#include <stdio.h>

int func(int num){
  if(num == 1)
    return 1;
  else
    return num*func(num-1);
}

int main() {
  int i;
  for(i=5; i>=0; i--){
    if(i%2==1)
      printf("func(%d): %d\n", i, func(i));
  }
}
// func(5): 120
// func(3): 6
// func(1): 1

<예제 2>

#include <stdio.h>

int f(int n){
  if(n > 0)
    return n % 10 + f(n/10);
  else
    return 0;
}

int main() {
  int result;
  result = f(123);
  printf("%d\n", result);
}
// 6

 

<예제 3>

#include <stdio.h>

int func(int n){
  if(n%2 == 1)
    n = n-1;
  if (n == 0)
    return 0;
  return func(n-2)+n;
}

int main() {
  int result;
  result = func(19);
  printf("result=%d\n", result);
}
// result=90

<예제 4>

#include <stdio.h>

int my(int i, int j){
  if(i < 3) i=j=1;
  else{
    i = i-1;
    j = j-i;
    printf("%d, %d\n", i, j);
    return my(i, j);
  }
}

int main() {
  my(5, 14);
  return 0;
}
// 4, 10
// 3, 7
// 2, 5

 

<예제 5>

#include <stdio.h>

int recursion(int n){
  if(n < 5) return 1;
  else if (n%5 == 1)
    return n + recursion(n-1);
  else recursion(n-1);
}

int main() {
  int n = recursion(16);
  printf("%d", n);
}
// 34

 

 

 

 

 

※ 유튜브 흥달쌤 깨알 C언어 특강을 직접 정리한 내용입니다