aboutsummaryrefslogtreecommitdiff
path: root/fib.kpl
blob: d6a7b0a674a872007e4433d0d74c08b3fee2ce98 (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 { `return.error $ "n Cannot Be Negative" }
    fib : `{[I64 n]
        ? {
            n = 0 { 0 }
            n < 2 { 1 }
            { + (fib `call n - 1; fib `call n - 2) }
        }
    }
    fib `call 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
}