Fibonacci sequence: Difference between revisions
Content added Content deleted
(→{{header|Racket}}: removed: there are more scheme solutions below) |
(Added Order) |
||
Line 2,398: | Line 2,398: | ||
PRINT A, |
PRINT A, |
||
UNTIL GET=1</lang> |
UNTIL GET=1</lang> |
||
=={{header|Order}}== |
|||
===Recursive=== |
|||
<lang c>#include <order/interpreter.h> |
|||
#define ORDER_PP_DEF_8fib_rec \ |
|||
ORDER_PP_FN(8fn(8N, \ |
|||
8if(8less(8N, 2), \ |
|||
8N, \ |
|||
8add(8fib_rec(8sub(8N, 1)), \ |
|||
8fib_rec(8sub(8N, 2)))))) |
|||
ORDER_PP(8fib_rec(10))</lang> |
|||
Tail recursive version (example supplied with language): |
|||
<lang c>#include <order/interpreter.h> |
|||
#define ORDER_PP_DEF_8fib \ |
|||
ORDER_PP_FN(8fn(8N, \ |
|||
8fib_iter(8N, 0, 1))) |
|||
#define ORDER_PP_DEF_8fib_iter \ |
|||
ORDER_PP_FN(8fn(8N, 8I, 8J, \ |
|||
8if(8is_0(8N), \ |
|||
8I, \ |
|||
8fib_iter(8dec(8N), 8J, 8add(8I, 8J))))) |
|||
ORDER_PP(8to_lit(8fib(8nat(5,0,0))))</lang> |
|||
===Memoization=== |
|||
<lang c>#include <order/interpreter.h> |
|||
#define ORDER_PP_DEF_8fib_memo \ |
|||
ORDER_PP_FN(8fn(8N, \ |
|||
8tuple_at(0, 8fib_memo_inner(8N, 8seq)))) |
|||
#define ORDER_PP_DEF_8fib_memo_inner \ |
|||
ORDER_PP_FN(8fn(8N, 8M, \ |
|||
8cond((8less(8N, 8seq_size(8M)), 8pair(8seq_at(8N, 8M), 8M)) \ |
|||
(8equal(8N, 0), 8pair(0, 8seq(0))) \ |
|||
(8equal(8N, 1), 8pair(1, 8seq(0, 1))) \ |
|||
(8else, \ |
|||
8lets((8S, 8fib_memo_inner(8sub(8N, 2), 8M)) \ |
|||
(8T, 8fib_memo_inner(8dec(8N), 8tuple_at(1, 8S))) \ |
|||
(8U, 8add(8tuple_at(0, 8S), 8tuple_at(0, 8T))), \ |
|||
8pair(8U, \ |
|||
8seq_append(8tuple_at(1, 8T), 8seq(8U)))))))) |
|||
ORDER_PP( \ |
|||
8for_each_in_range(8fn(8N, \ |
|||
8print(8to_lit(8fib_memo(8N)) (,) 8space)), \ |
|||
1, 21) \ |
|||
)</lang> |
|||
=={{header|Oz}}== |
=={{header|Oz}}== |