#!/usr/bin/nesla
/* 

inspired by unreadable text at http://progopedia.ru/language/nesla/

#!/usr/bin/nesla
function factorial(n)
{
    if (n == 0) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

for (n = 0; n <= 16; n++) {
    print(n, "! = ", factorial(n), "\n");
}

0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 39916800
12! = 479001600
13! = 6227020800
14! = 87178291200
15! = 1307674368000
16! = 20922789888000
17! = 355687428096000
18! = 6402373705728000
19! = 121645100408832000
20! = 2432902008176640000
21! = nan
22! = nan
23! = nan

 */

function factorial(n) {
        if (n>1) return n*factorial(n-1); else return 1;
}

for (i=0;i<24;i++) print(tostring(i),"! = ",factorial(i),"\n");