Chinaunix

标题: 谁会算斐波那契数列 [打印本页]

作者: patagonia2    时间: 2016-05-22 14:28
标题: 谁会算斐波那契数列
求斐波那契数列最快算法

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

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

  7. main(_) ->
  8.     F = fibonacci (100),
  9.     ?PP (F),
  10. halt().
复制代码
求大圣的高效写法。
作者: patagonia2    时间: 2016-05-22 14:33
ER 是一门被设计用于编写并发、实时、分布式系统的新语言。
如何并发? 求斐波那契数列 ?
作者: patagonia2    时间: 2016-05-23 16:07
本帖最后由 patagonia2 于 2016-05-23 16:17 编辑

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

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

  7. main(_) ->
  8.     N = 100,
  9.     Fib = fibonacci (N),
  10.     ?PP (Fib, N),
  11. halt().
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2