view examples/recursive.rs @ 52:d713ed3952ac v0.1.7

Release v0.1.7 Release of #6 for #5
author Lewin Bormann <lbo@spheniscida.de>
date Mon, 22 Feb 2021 21:48:29 +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);
}