2011年2月24日木曜日

ErlangでProject Euler Program2 問題を解いてみる

Problem 2 - PukiWiki

ソース:

-module(program2).
-export([start/1]).

% フィボナッチ数列 {1,1,2,3,5,8,13,...} の計算
fib(1) -> 1;
fib(2) -> 1;
fib(N) -> fib(N-1) + fib(N-2).

start( N ) ->
 if
  N > 4000000 -> io:format("over 4000000~n");
  (N rem 2) =:= 0 -> prog_fib( N );
  true -> prog_fib(N-1)
 end.

prog_fib(1) -> fib(1);
prog_fib(2) -> fib(2);
prog_fib(N) -> fib(N) + prog_fib(N-2).

40とか50以上はなかなか終わりません。