progs/fun-tests/fact.fun
author Christian Urban <christian.urban@kcl.ac.uk>
Sun, 04 Oct 2020 12:30:24 +0100
changeset 771 eb5eb8f11e1e
parent 742 155426396b5f
child 790 71ef7d9ef635
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
655
689d1bdd91c0 updated
Christian Urban <urbanc@in.tum.de>
parents: 626
diff changeset
     1
// a simple factorial program
689d1bdd91c0 updated
Christian Urban <urbanc@in.tum.de>
parents: 626
diff changeset
     2
// (including a tail recursive version)
224
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     3
655
689d1bdd91c0 updated
Christian Urban <urbanc@in.tum.de>
parents: 626
diff changeset
     4
689d1bdd91c0 updated
Christian Urban <urbanc@in.tum.de>
parents: 626
diff changeset
     5
def fact(n) =
689d1bdd91c0 updated
Christian Urban <urbanc@in.tum.de>
parents: 626
diff changeset
     6
  if n == 0 then 1 else n * fact(n - 1);
224
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     7
655
689d1bdd91c0 updated
Christian Urban <urbanc@in.tum.de>
parents: 626
diff changeset
     8
def facT(n, acc) =
689d1bdd91c0 updated
Christian Urban <urbanc@in.tum.de>
parents: 626
diff changeset
     9
  if n == 0 then acc else facT(n - 1, n * acc);
689d1bdd91c0 updated
Christian Urban <urbanc@in.tum.de>
parents: 626
diff changeset
    10
689d1bdd91c0 updated
Christian Urban <urbanc@in.tum.de>
parents: 626
diff changeset
    11
def facTi(n) = facT(n, 1);
224
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    12
655
689d1bdd91c0 updated
Christian Urban <urbanc@in.tum.de>
parents: 626
diff changeset
    13
//fact(10)
689d1bdd91c0 updated
Christian Urban <urbanc@in.tum.de>
parents: 626
diff changeset
    14
//facTi(10)
224
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    15
702
67ab7162a861 updated
Christian Urban <urbanc@in.tum.de>
parents: 655
diff changeset
    16
write(facTi(6))
655
689d1bdd91c0 updated
Christian Urban <urbanc@in.tum.de>
parents: 626
diff changeset
    17