Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

how do I average in scheme?

Name: Anonymous 2010-12-26 21:31

im learning scheme and im not very good its my first languages what am i doing wrong

(define (average nums)
   (/ (+ (car nums) (average (cdr nums))) 2))

then i do (average (list 2 3 4 5 6)) but it doesnt work
also how can i do that (average 2 3 4 5 6) gives me the average without doing a list?

please help

Name: Anonymous 2010-12-27 0:52

Oh nvm, just remembered what letrec means, was a bit confused there for a moment. Also i meant to write this ofc:

(define (average . numbers)
  (define average' (nums acc count)
    (if (null? nums) (/ nums count)
        (average' (cdr nums) (+ (car nums) acc) count)))
  (average' numbers 0 (length numbers)))

Name: Anonymous 2010-12-27 0:56

You're right ofc. So the final version would be this:

(define (average . numbers)
  (define average' (nums acc count)
    (if (null? nums) (/ nums count)
        (average' (cdr nums) (+ (car nums) acc) (+ count 1))))
  (average' numbers 0 0))

Name: Anonymous 2010-12-27 1:09

Correctly:

(define (average . numbers)
  (define (average' nums acc count)
    (if (null? nums) (/ acc count)
        (average' (cdr nums) (+ (car nums) acc) (+ count 1))))
  (average' numbers 0 0))

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List