patagonia2 发表于 2016-05-22 14:28

谁会算斐波那契数列

求斐波那契数列最快算法{:yxh147:}

大家可以求Fibonacci的第100项试试,
感受一下这样递归会慢到什么程度。
在我的机器上,
运行了1个多小时也没有结果。{:yxh54:} {:yxh54:}%-module(fibonacci).
-mode(native).
-define (PP (V), io:format ("~s = ~p~n", [??V, V])).

fibonacci (0) -> 0;
fibonacci (1) -> 1;
fibonacci (N) -> fibonacci (N - 1) + fibonacci (N - 2).

main(_) ->
    F = fibonacci (100),
    ?PP (F),
halt().
求大圣的高效写法。

patagonia2 发表于 2016-05-22 14:33

ER 是一门被设计用于编写并发、实时、分布式系统的新语言。
如何并发? 求斐波那契数列 ? {:yxh4:}

patagonia2 发表于 2016-05-23 16:07

本帖最后由 patagonia2 于 2016-05-23 16:17 编辑

{:yxh5:} 觉得很不错 fly
哪一个比较好?%-module(fibonacci).
-define (PP (V, N), io:format ("~s ~p = ~p~n", [??V, N, V])).

fibonacci (A) when A < 2 -> A;
fibonacci (A) -> fibonacci (2, A + 1, 0, 1).
fibonacci (A, A, _, B) -> B;
fibonacci (A0, A, B, C) -> fibonacci (A0 + 1, A, C, B + C).

main(_) ->
    N = 100,
    Fib = fibonacci (N),
    ?PP (Fib, N),
halt().
页: [1]
查看完整版本: 谁会算斐波那契数列