=================================================================================================
[실행화면]
=================================================================================================
[소스코드]
/* 작성자 : creazier (블로그 주인장) */
#include <stdio.h>
int recursive_fibo(int num); // 재귀 호출
int nonrecursive_fibo(int size); // 비재귀 호출
int main(void)
{
int i, size;
printf("출력할 피보나치 수열의 개수를 입력하세요 : ");
scanf("%d", &size);
printf("재귀 : ");
for(i=0; i<size; ++i) // 카운팅 반복문
{
printf("%d ", recursive_fibo(i));
}
printf("\n");
printf("비재귀 : ");
for(i=0; i<size; ++i) // 카운팅 반복문
{
printf("%d ", nonrecursive_fibo(i));
}
printf("\n");
return 0;
}
int recursive_fibo(int num) // 재귀호출 버전
{
if(num == 0 || num == 1) // 종료조건
return num;
return recursive_fibo(num-1) + recursive_fibo(num-2); // 점화식 : Fn = Fn-1 + Fn-2
}
int nonrecursive_fibo(int num) // 비재귀 호출 버전
{
int x = 0, y = 1, hap = 0, count = 0;
if(num == 0 || num == 1) // 고정된 예외 (시작부분) - 반복문 횟수를 줄이는 목적
return num;
if(num == 2) // 첫번째, 두번째 수가 정해졌으므로... - 반복문 횟수를 줄이는 목적
return 1;
while(++count < num)
{
hap = x + y;
x = y;
y = hap;
}
return y;
}
=================================================================================================
'IT_Programming > C · C++' 카테고리의 다른 글
[C] 배열 대각선 모양으로 숫자 넣기 (0) | 2009.06.05 |
---|---|
[ C++ ] Efficient C++ Key Point 정리 (0) | 2009.06.03 |
[c] 다이아몬드 지그재그로 출력하기 (출력 문자 : A~Z) (0) | 2009.06.01 |
[C] 동적 메모리 할당으로 다이아몬드 찍기 (0) | 2009.05.27 |
[C++] 연산자 오버로딩 정리와 예제... (0) | 2009.05.16 |