def fib(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
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
}
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)
function fib(n) {
let [a, b] = [0, 1];
for (let i = 0; i < n; ++i) {
[a, b] = [b, a + b];
}
return a;
}
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;
}
(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))))
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;
}
fib : Nat -> Nat := {
0 1 rot3 {
dec rotr3 dup rotr3 + rot3
} {dup 0 >} while
pop pop
}