フィボナッチ数列 by Erlang

ナイーブに書いてみました.

-module(fib).
-export([fib/1]).

fib(N) ->
    if
        N == 0 -> 1;
        N == 1 -> 1;
        true -> fib(N -1) + fib(N - 2)
    end.

if文の条件のところに or式は使えないのだろうか?使ってたら文法エラーになりました.なんか直感的ではないと思いつつ,orは別の式にするあたりがPrologっぽいとも思いました.

再帰が爆発して,fib:fib(100)とかやって,帰ってこない…