네 가지 Fibonacci 시퀀스

Fibonacci 시퀀스: 1 2 3 5 8 13 (하나의 수는 앞의 두 수의 합과 같다)
 1.Fibonacci 시퀀스_반복 (간단하고 오래 사용)
#include<stdio.h>
enum {N=30};//Fibonacci 
 
int f(int x)
{
return x>2 ? f(x-1)+f(x-2) : 1;
}
 
int main()
{
int i;
 
for(i=1;i<=N;i++)
printf("%d\t",f(i));
 
return 0;
}

2. Fibonacci 시퀀스_반복 (빠르고 짧은 사용)
#include<stdio.h>
enum {N=30};//Fibonacci 
int ff(int a,int b,int n)
{
    return n<=1 ? b : ff(a+b,a,n-1);
}
int f(int n)
{
    return ff(1,1,n);
}
int main()
{
    int i=1;
 
    for(i=1; i<=N; i++)
        printf("%d\t",f(i));
 
    return 0;
}

3. Fibonacci 시퀀스(배열 방법)
#include<stdio.h>
enum {N=30};     //Fibonacci 
 
int main()
{
    int i,a[N]={1,1};
 
    for(i=2;i<N;i++)
        a[i] = a[i-1] + a[i-2];
 
    for(i=0;i<N;i++)
        printf("%d\t",a[i]);
 
    return 0;
}

4. Fibonacci 시퀀스(순환 교환)
#include<stdio.h>
enum {N=30};     //Fibonacci 
 
int main()
{
    int i,t=1,m=0,j=1;
 
    for(i=1;i<=N;i++)
    {
        printf("%d\t",j);
 
        j=t+m; m=t; t=j;
    }
 
    return 0;
}

좋은 웹페이지 즐겨찾기