fn fib1(n, a, b) { if n == 0 { a+b } else { fib1(n-1, a+b, a) } } fn fib(n) { if n <= 0 { 0 } else { if n <= 2 { 1 } else { fib1(n-2, 1, 0) } } } fib(42) == 267914296 && fib(84) == 160500643816367088 // overflows stack in debug mode, works in release mode //&& fib(92) == 7540113804746346429 // fib(93) overflows i64