Rebol3 Code Examplex


Fibonacci sequence

Generate the Fibonacci series.

Rebol [
    title: "Rosetta code: Fibonacci sequence"
    file:  %Fibonacci_sequence.r3
    url:   https://rosettacode.org/wiki/Fibonacci_sequence
]

fibonacci: function/with [
    {Return the Nth Fibonacci number using iterative state advancement.
    Uses a shared block to swap fn and fn-1 in a single expression.}
    number [integer!]  "which Fibonacci number to compute (0-indexed)"
][
    fn-1: 0                                    ;; F(0)
    fn:   1                                    ;; F(1)
    loop number advance-fibonacci
][
    fn: fn-1: 0
    advance-fibonacci: [ fn: fn-1 + fn-1: fn ] ;; simultaneously: new fn = old fn + old fn-1
]

probe collect [repeat i 18 [keep fibonacci i]]