fibonacci_sequence.sf 491 B

123456789101112131415161718192021222324252627282930
  1. #!/usr/bin/ruby
  2. func fib_iter(n) {
  3. var fib = [1, 1];
  4. { fib = [fib[-1], fib[-2] + fib[-1]] } \
  5. * (n - fib.len);
  6. return fib[-1];
  7. }
  8. func fib_rec(n) {
  9. n < 2 ? n : (__FUNC__(n-1) + __FUNC__(n-2));
  10. }
  11. func fib_mem (n) {
  12. static c = [];
  13. n < 2 && return n;
  14. c[n] := (__FUNC__(n-1) + __FUNC__(n-2));
  15. }
  16. var a = fib_iter(12)
  17. var b = fib_rec(12)
  18. var c = fib_mem(35)
  19. say "fib(12) = #{a}"
  20. say "fib(35) = #{c}"
  21. assert_eq(a, 144)
  22. assert_eq(b, a)
  23. assert_eq(c, 9227465)