Skip to content

Instantly share code, notes, and snippets.

@AugmentedFifth
Created April 23, 2018 03:16
Show Gist options
  • Save AugmentedFifth/86260f5ecea787cba0c039f62b79ee6e to your computer and use it in GitHub Desktop.
Save AugmentedFifth/86260f5ecea787cba0c039f62b79ee6e to your computer and use it in GitHub Desktop.

W H O M S ' T

Python 3

def fib(n):
    a, b = 0, 1
    for _ in range(n):
        a, b = b, a + b

    return a

Rust

fn fib(n: u64) -> u64 {
    let (mut a, mut b) = (0, 1);
    for _ in 0..n {
        let tmp = a + b;
        a = b;
        b = tmp;
    }

    a
}

Haskell

fib :: Integral i => i -> i
fib = fibIter 0 1

fibIter :: Integral i => i -> i -> i -> i
fibIter a _ 0 = a
fibIter a b n = fibIter b (a + b) (n - 1)

Javascript

function fib(n) {
    let [a, b] = [0, 1];
    for (let i = 0; i < n; ++i) {
        [a, b] = [b, a + b];
    }

    return a;
}

Java

static BigInteger fib(int n) {
    BigInteger a = BigInteger.valueOf(0), b = BigInteger.valueOf(1);
    for (int i = 0; i < n; ++i) {
        BigInteger tmp = a.add(b);
        a = b;
        b = tmp;
    }

    return a;
}

Scheme

(define (fib n)
    (fib-iter 0 1 n))

(define (fib-iter a b n)
    (if (= n 0)
        a
        (fib-iter b (+ a b) (- n 1))))

C

unsigned long long fib(int n)
{
    unsigned long long a = 0, b = 1;
    for (int i = 0; i < n; ++i) {
        unsigned long long tmp = a + b;
        a = b;
        b = tmp;
    }

    return a;
}

ataraxia

fib : Nat -> Nat := {
    0 1 rot3 {
        dec rotr3 dup rotr3 + rot3
    } {dup 0 >} while
    pop pop
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment