view examples/recursive.rs @ 76:02996990927d

Update readme with SharedCache feature and thread local expansion
author Leodore <lconrads@ucsc.edu>
date Sun, 20 Mar 2022 23:27:47 -0700
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);
}