티스토리 뷰
# 피보나치 수열 문제
Fibonacci 수열은 다음과 같이 정의된다.
$f_0 = 0, f_1 = 1 그리고 f_i = f_{i - 1} + f_{i - 2}(i > 1 일 때)$
$f_i$를 계산하는 C함수로 순환 함수와 반복 함수를 모두 작성하라.
# 구현 // 반복버전에서 반복계수가 2부터 시작해서 n까지 간다는 것만 주의하면 된다. 반복계수가 2인 까닭은 2개의 초기값을 설정해줬기 때문에 0과 1을 지나쳐 2부터 시작되는 것이다.
/*************************************************
**Fibonacci iterative & recursive ver
*************************************************/
#include <stdio.h>
int recur_fibo(int n);
int iter_fibo(int n);
void main()
{
int n;
while (1)
{
printf("테스트를 원하는 양의 정수를 입력해주세요. 음수를 입력하면 프로그램을 종료합니다.\n");
scanf("%d", &n);
if (n < 0)
break;
printf("순환 버전 피보나치 결과: %d\n", recur_fibo(n));
printf("반복 버전 피보나치 결과: %d\n", iter_fibo(n));
}
}
int recur_fibo(int n)
{
if (n <= 1)
return n;
return recur_fibo(n - 1) + recur_fibo(n - 2);
}
int iter_fibo(int n)
{
int i;
int f0, f1, fi;
// 초기값 설정
f0 = 0;
f1 = 1;
// 예외처리
if (n == 0) return 0;
else if (n == 1) return 1;
else
{
for (i = 2; i <= n; i++)
{
fi = f0 + f1;
f0 = f1;
f1 = fi;
}
}
return fi;
}
/*************************************************
** End Line
*************************************************/
'Develop Story > C' 카테고리의 다른 글
| <변수와 상수 고급 이론> 형한정어 Volatile (0) | 2017.08.18 |
|---|---|
| <변수와 상수 고급 이론> 형한정어 Const (0) | 2017.08.18 |
| <팩토리얼(=계승) 함수>: #순환 버전 #반복 버전 (0) | 2017.07.25 |
| <C 프로그래밍 #1-1> 순환으로 최대값 최소값 구하기 (0) | 2017.06.29 |
| C 언어 게임 프로그래밍 #1 : 배틀 테트리스 (5) | 2017.06.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday