본문 바로가기
  • Welcome.
:: C_ 🚩/알고리즘

[자료구조] #03 by C언어 [재귀호출 알고리즘]

by EunBird 2021. 3. 26.

[알고리즘1]

ㅡㅡㅡㅡㅡ

#include <stdio.h>

void recursive_func(int n){

   if (n==0)

      return;

   printf("before call: %d\n", n);

   recursive_func(n-1);

   printf("after call : %d \n", n);

 

}

void main() {

   recursive_func(5);

}

ㅡㅡㅡㅡㅡ

 

아래와 같은 원리가 적용된다.

 

 


[알고리즘2]

ㅡㅡㅡㅡㅡ

#include <stdio.h>

int factorial(int n){

   if(n==1)

      return n;

   return n*factorial(n-1);

}

void main(void) {

   printf("%d \n", factorial(5));

}

ㅡㅡㅡㅡㅡ

 

 

 

 

 


 

 

[알고리즘3]

ㅡㅡㅡㅡㅡ

#include<stdio.h>

int fibonacci(int n){

   if (n<=1)

      return n;

   return fibonacci(n-2) + fibonacci(n-1);

}

void main(){

   int i;

   for (i=1; i<=10; ++i)

      printf("%d ", fibonacci(i));

   printf("\n");

}

ㅡㅡㅡㅡㅡ

 

 

디버깅표나 그림을 그려보는 것이 이해에 좋다

그러나 이 피보나치 수열을 출력하는데에는

재귀함수를 사용하는 것도 나쁘지 않지만,

일반적인 for문을 사용하는 것이 시간복잡도가 더 작다.

728x90

댓글