aboutsummaryrefslogtreecommitdiff
path: root/fib.kpl
blob: 224e8340eccf210ebdede8125e9678afa55641e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

// Fibonacci Example

`export fib_recursive : `{[I64 n]
    ? n < 0 { .error $ "n Cannot Be Negative" }
    fib : `{[I64 n]
        ? {
            n = 0 { 0 }
            n < 2 { 1 }
            { + (fib `sync n - 1; fib `sync n - 2) }
        }
    }
    fib `sync n
}

`export fib_loop : `{[I64 n]
    ? n < 0 { `return.error $ "n Cannot Be Negative" }
    a : 0
    b : 1
    @ 0 .. n {
        c : b
        b +: a
        a : c
    }
    a
}

`export fib_array : `{[I64 n]
    ? {
        n < 0 { `return.error $ "n Cannot Be Negative" }
        n > 1 { n -: 1 }
    }
    arr : Array (0; 1)
    @ 0 .. n {
        arr `push arr[-2] + arr[-1]
    }
    arr
}