wvogel日記

自分用の技術備忘録が多めです.

Haskell脳

フィボナッチ数列 with Haskell.


main = print $ fibo 10

fibo :: Int -> Int
fibo 1 = 1
fibo 2 = 1
fibo n = fibo (n-1) + fibo (n-2)


一行目のfibo関数の引数が、フィボナッチ数列の10番目の要素値を求めることを指定します。
本当は、再帰表現で、1,1,2,3,5,8,13,21,34,55...とやりたかったけど、それを目指して書いていたらこの形になってしまった。

C言語なら、

#include <stdio.h>
#define N 10

int main(){
    int a,b,c,i;
    a = b = c = 1;
    printf("1\n");
    for(i = 0; i<N-1 ; i++){
        printf("%d\n",c);
        a = b;
        b = c;
        c = a + b;
    }
    return 0;
}

とするところですね。
Haskell再帰にまだ慣れない。