Page 1 of 1

i dont understand this code

Posted: Sun Oct 13, 2013 7:16 am
by jeltedeproft
hy everyone, for homework i had to make a faculty function that used multiplication.

so i made this :

(define (fac a)
(if (= a 1)
1
(* a (fac (- a 1)))))

and it works, but the solution gave this :

(define (fac n)
(product (lambda (x) x) 1 (lambda (x) (+ x 1)) n))

and i dont understand what happens here, could someone explain for me?

many thanks, a beginning student

Re: i dont understand this code

Posted: Sun Oct 13, 2013 9:31 am
by Goheeca
Obviously the product takes 4 arguments an expression, a lower bound, an incrementor and an upper bound. And it works just like a mathematics big pi notation. In this particular usage the expression is an identity function (it's returning the index), the lower bound is 1, the incrementor is a function incrementing by 1 and finally the upper bound is n.