view examples/recursive.rs @ 92:813907a7c64f

Remove `Cargo.lock` from directory
author blyxyas <blyxyas@gmail.com>
date Fri, 13 Jan 2023 11:46:20 +0100
parents 3ed9875b9139
children
line wrap: on
line source

use memoize::memoize;

#[memoize]
fn fib(n: u64) -> u64 {
    if n < 2 {
        1
    } else {
        fib(n - 1) + fib(n - 2)
    }
}

#[memoize]
fn fac(n: u64) -> u64 {
    if n < 2 {
        1
    } else {
        n * fac(n - 1)
    }
}

fn main() {
    let fibs = (0..21).map(fib).collect::<Vec<u64>>();
    println!("fib([0,...,20]) = {:?}", fibs);

    let facs = (0..21).map(fac).collect::<Vec<u64>>();
    println!("fac([0,...,20]) = {:?}", facs);
}