scheme代码:
;;; Method1 -- count the sum of digit before x
(define (sum1 x)
(do ((n 0 (+ 1 n))
(sum 0 (+ sum n)))
((> n x) sum)))
;;; Method2 -- count the sum of digit before x
(define (sum2 x)
(sum2-iter 0 0 x))
(define (sum2-iter a b count)
(if (> b count)
a
(sum2-iter (+ a b) (+ b 1) count)))
;;; Method1 -- compute the factorial
(define (fact1 x)
(do ((n 1 (+ n 1))
(cur 1 (* cur n)))
((> n x) cur)))
;;; Method2 -- compute the factorial
(define (fact2 n)
(fact2-iter 1 1 n))
(define (fact2-iter a b count)
(if (> b count)
a
(fact2-iter (* a b) (+ b 1) count)))
;;; Method1 -- compute the fibonacci
(define (fib1 x)
(do ((a 1 (+ a b))
(b 0 a)
(count x (- count 1)))
((= count 0) b)))
;;; Method2 -- compute the fibonacci
(define (fib2 n)
(fib2-iter 1 0 n))
(define (fib2-iter a b count)
(if (= count 0)
b
(fib2-iter (+ a b) a (- count 1))))