递归

原创
2016/02/19 01:48
阅读数 107

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))))



展开阅读全文
加载中
点击加入讨论🔥(1) 发布并加入讨论🔥
打赏
1 评论
0 收藏
1
分享
返回顶部
顶部