(define (f2 n) | int f2i (int n, int result, int count) (define (f2i result count) | { (if (> count n) | if (count > n) return result; result | return f2i (n, result * count, ++count); (f2i (* result count) | } (+ count 1)))) | int f2 (int n) (f2i 1 1)) | { | return f2i (n, 1, 1); | } (SCHEME/LISP) | (C/C++)