: fib ( Int -- Int )
    dup 1 i.<= [
        # Base cases: fib(0)=0, fib(1)=1
    ] [
        dup 1 i.- fib
        swap 2 i.- fib
        i.+
    ] if
;

: test-fibonacci ( -- )
    10 fib
    55 test.assert-eq

    0 fib
    0 test.assert-eq

    1 fib
    1 test.assert-eq
;
