123456789101112131415161718192021222324252627282930 |
- #!/usr/bin/ruby
- func fib_iter(n) {
- var fib = [1, 1];
- { fib = [fib[-1], fib[-2] + fib[-1]] } \
- * (n - fib.len);
- return fib[-1];
- }
- func fib_rec(n) {
- n < 2 ? n : (__FUNC__(n-1) + __FUNC__(n-2));
- }
- func fib_mem (n) {
- static c = [];
- n < 2 && return n;
- c[n] := (__FUNC__(n-1) + __FUNC__(n-2));
- }
- var a = fib_iter(12)
- var b = fib_rec(12)
- var c = fib_mem(35)
- say "fib(12) = #{a}"
- say "fib(35) = #{c}"
- assert_eq(a, 144)
- assert_eq(b, a)
- assert_eq(c, 9227465)
|