EASY7
memorization / 피보나치 수열 본문
순환을 이용한 피보나치 수열
같은 계산을 또 하지 않기 위해 F배열에 값을 메모한다.
#include <stdio.h>
#include <stdlib.h>
int fib(int n, int* F) {
if (n == 1 || n == 2)
return 1;
if (F[n - 1] == 0)
F[n - 1] = fib(n - 1, F);
if (F[n - 2] == 0)
F[n - 2] = fib(n - 2, F);
printf("%d ", F[n - 1] + F[n - 2]);
return F[n - 1] + F[n - 2];
}
int main(void)
{
int n, i;
int *F;
printf("몇 번째까지의 피보나치 수열:");
scanf("%d", &n); //fn
F = (int*)malloc(sizeof(int)*(n + 1));
for (i = 0; i < n; i++)
F[i] = 0;
fib(n, F);
}
#include <stdlib.h>
int fib(int n, int* F) {
if (n == 1 || n == 2)
return 1;
if (F[n - 1] == 0)
F[n - 1] = fib(n - 1, F);
if (F[n - 2] == 0)
F[n - 2] = fib(n - 2, F);
printf("%d ", F[n - 1] + F[n - 2]);
return F[n - 1] + F[n - 2];
}
int main(void)
{
int n, i;
int *F;
printf("몇 번째까지의 피보나치 수열:");
scanf("%d", &n); //fn
F = (int*)malloc(sizeof(int)*(n + 1));
for (i = 0; i < n; i++)
F[i] = 0;
fib(n, F);
}
'개발 공부 > C' 카테고리의 다른 글
[c언어] 다양한 SORT 방법(insert / merge) (0) | 2017.10.04 |
---|---|
[c언어] 순환 / 큰 값으로 만들어주는 길 찾기 (0) | 2017.10.04 |
memorization / 조합 combination (0) | 2017.10.04 |
[c언어] 미로 길 찾기 (0) | 2017.10.04 |
[c언어] 디버깅 debuging (0) | 2017.09.28 |
Comments