フィボナッチ数

Error 404 Not Found経由でWikipediaに載ってたフィボナッチ数の一般項を書いてみた。

#include <stdio.h>
#include <math.h>

double fib(int n)
{
    double sqrt5 = sqrt(5);
    return (1.0 / sqrt5)
        * (pow((1.0+sqrt5) / 2.0, n) - pow((1.0-sqrt5) / 2.0, n));
}

int main()
{
    int i;
    for (i = 1; i <= 10; i++) {
        printf("[%2d] : %2.2f\n", i, fib(i));
    }
    return 0;
}

実行してみる。

[~]% gcc -o fib fib.c -lm
[~]% ./fib 
[ 1] : 1.00
[ 2] : 1.00
[ 3] : 2.00
[ 4] : 3.00
[ 5] : 5.00
[ 6] : 8.00
[ 7] : 13.00
[ 8] : 21.00
[ 9] : 34.00
[10] : 55.00
[~]% 

想像以上に精度が良い。