// Factorial - Recursive function
import Std::Io::{PrintLine};
import Std::Fmt::{Fmt_Fmt2};

func Factorial(n: int) -> int {
    if n <= 1 {
        return 1;
    }
    return n * Factorial(n - 1);
}

func Main() -> int {
    PrintLine("Factorials:");
    
    var i: int = 1;
    while i <= 10 {
        let fact: int = Factorial(i);
        PrintLine(Fmt_Fmt2("{0}! = {1}", String_FromInt(i), String_FromInt(fact)));
        i = i + 1;
    }
    
    return 0;
}
