[알고리즘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
':: C_ 🚩 > 알고리즘' 카테고리의 다른 글
[자료구조] by C언어 #09 [stack 구조] (0) | 2021.03.30 |
---|---|
[자료구조] by C언어 -#08 [Quick sort] (0) | 2021.03.29 |
[자료구조] by C언어 #07 [insertion sort] (0) | 2021.03.28 |
[자료구조] by C언어 -05- [Merge Sort, Quick Sort] (0) | 2021.03.27 |
[자료구조] by c언어 #02 시간복잡도, 공간복잡도, Big-O 표기법 (0) | 2021.02.16 |
댓글