Algorithms

[알고리즘] dynamic Fibonacci

Roien 2015. 7. 4.
반응형

1. 기본 (재귀)


int fibonacci(int i)

{

    if (i == 0)

        return 0;

 

    if (i <= 2) {

        return 1;

    }

 

    return fibonacci(i - 2) + fibonacci(i - 1);

}



2. 해집합 이용 (dynamic)

int dynamic_fibonacci(int n, int *solution_set)

{

    int ret = 0;

 

    if (n == 0)

        return 0;

 

    if (solution_set[n] > 0) {

        ret = solution_set[n];

        goto end;

    }

 

    if (n <= 2) {

        ret = solution_set[n] = 1;

        goto end;

    }

 

    solution_set[n] = dynamic_fibonacci(n - 2, solution_set)

        + dynamic_fibonacci(n - 1, solution_set);

    return solution_set[n];

   

end:

    return ret;

}

 


반응형

댓글