Code Review Stack Exchange is a question and answer site for peer programmer code reviews. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Given the following recursive definition of sum:

(define (sum term a next b)
  (if (> a b)
      0
      (+ (term a)
         (sum term (next a) next b))))

And the task:

Exercise 1.30

The sum procedure above generates a linear recursion. The procedure can be rewritten so that the sum is performed iteratively. Show how to do this by filling in the missing expressions in the following definition:

(define (sum term a next b)
  (define (iter a result)
    (if <??>
        <??>
        (iter <??> <??>)))
  (iter <??> <??>))

I wrote the following code. What do you think?

(define (i-sum term a next b)
  (define (iter a result)
    (if (> a b)
        result
        (iter (next a) (+ result (term a)))))
  (iter a 0))

(define (identity x) x)
(define (inc x) (+ 1 x))
(define (sum-integers a b) (i-sum identity a inc b))
share|improve this question

migrated from stackoverflow.com Mar 30 '11 at 3:11

This question came from our site for professional and enthusiast programmers.

up vote 2 down vote accepted

I believe your answer is correct, although I'm not sure why you need the identity, inc, and sum-integers procedure on the bottom for your solution.

share|improve this answer
    
Not homework - personal growth exercise :) – jaresty Mar 30 '11 at 2:51
    
@Joshua: Haha okay, just checking. :) – Mehrdad Mar 30 '11 at 2:57
    
They're there for testing purposes - I suppose maybe I should have removed them before posting the question?...hmm – jaresty Mar 30 '11 at 3:22

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.