  PROTO INT fact(k)
  FUNC VOID affichetab(taille, t[]) {
    INT i
    i := 0
    WHILE taille - i
    DO {
      PRINT "f(", i, ") = ", t[i], "\n"
      i := i+1
    }
    DONE
  }
  FUNC VOID main() {
    INT n
    PRINT "Que vaut n ?"
    READ n
    {
      INT i, t[n]
      i := 0
      WHILE n - i
      DO {
        t[i] := fact(i)
        i := i+1
      }
      DONE
      affichetab(n, t)
    }
  }
  FUNC INT fact(n)
    IF n THEN RETURN n* fact(n-1)
    ELSE RETURN 1 FI
