lyuehh
3/2/2013 - 7:08 AM

p2.erl

#!/usr/bin/env escript

%% 递归版本
fib(1) -> 1;
fib(2) -> 1;
fib(N) -> fib(N-1) + fib(N-2).

%% 尾递归优化版本
fib2(N) -> fib2_iter(1,0,N).
fib2_iter(A, B, N) ->
  if
    N == 0 -> B;
    true -> fib2_iter(A+B, A, N-1)
  end.

main(_) ->
  io:format("~p~n",[fib(1)]),
  io:format("~p~n",[fib2(40)]).