exercise-1.11-recursive-process-iterative-process.rkt 713 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #lang racket
  2. ;; recursive process
  3. (define (f n)
  4. (if
  5. (< n 3)
  6. n
  7. (+
  8. (f (- n 1))
  9. (* 2 (f (- n 2)))
  10. (* 3 (f (- n 3))))))
  11. ;; iterative process
  12. (define (f-iter n)
  13. (if
  14. (< n 3)
  15. n
  16. (func-iter 2 1 0 n)))
  17. (define (func-iter a b c count)
  18. (if
  19. (< count 3)
  20. a
  21. (func-iter
  22. ; a = (+ a (* 2 b) (* 3 c))
  23. ; variable a sums up everything
  24. (+ a (* 2 b) (* 3 c))
  25. a ; b = a ??? because a was
  26. b ; c = b ???
  27. (- count 1)))) ; one less iteration remaining
  28. ;; SOLUTION
  29. (define (F-iter n)
  30. (if
  31. (< n 3)
  32. n
  33. (F-iter-aux 2 1 0 n)))
  34. (define (F-iter-aux a b c count)
  35. (if
  36. (= count 2)
  37. a
  38. (F-iter-aux
  39. (+ a (* 2 b) (* 3 c))
  40. a
  41. b
  42. (- count 1))))
  43. (f 30)
  44. (f-iter 30)
  45. (F-iter 30)